English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial básico da linguagem C

Controle de fluxo da linguagem C

Funções no C

Matrizes no C

Ponteiros no C

Strings no C

Estruturas da linguagem C

Arquivos da linguagem C

Outro C

Manual de referência da linguagem C

Uso e exemplo da função setvbuf() da biblioteca C

Biblioteca Padrão C - <stdio.h>

Função da biblioteca C int setvbuf(FILE *stream, char *buffer, int mode, size_t size) Define como o fluxo stream deve ser bufferizado.

Declaração

Aqui está a declaração da função setvbuf().

int setvbuf(FILE *stream, char *buffer, int mode, size_t size)

Parâmetros

  • stream -- Este é um ponteiro para um objeto FILE, que identifica um fluxo aberto.
  • buffer -- Este é o buffer alocado para o usuário. Se definido como NULL, a função aloca automaticamente um buffer de tamanho especificado.
  • mode -- Isso especifica o modo de bufferização do arquivo:
ModoDescrição
_IOFBFBuffer completo: Para a saída, os dados são escritos uma vez que o buffer estiver cheio. Para a entrada, o buffer é preenchido até encontrar a próxima solicitação de entrada e o buffer estiver vazio.
_IOLBFBuffer de linha: Para a saída, os dados são escritos quando encontrar um caractere de nova linha ou o buffer estiver cheio, dependendo do caso. Para a entrada, o buffer é preenchido até encontrar a próxima nova linha quando solicitado.
_IONBFSem buffer: Não usar buffer. Cada I/O operações são escritas imediatamente. Os parâmetros buffer e size são ignorados.
  • size --Este é o tamanho do buffer, em bytes.

Retorno

Se bem-sucedido, a função retorna 0, caso contrário, retorna um valor não nulo.

Exemplo online

O exemplo a seguir demonstra o uso da função setvbuf().

#include <stdio.h>
int main()
{
   char buff[1024];
   memset( buff, '\0', sizeof( buff ));
   fprintf(stdout, "Ativar buffer completo\n");
   setvbuf(stdout, buff, _IOFBF, 1024;
   fprintf(stdout, "Aqui está oldtoolbag.com\n");
   fprintf(stdout, "Essa saída será salva em buff\n");
   fflush( stdout );
   fprintf(stdout, "Isso ocorrerá durante a programação\n");
   fprintf(stdout, "O último sono durará cinco segundos\n");
   sleep(5;
   return(0);
}

Vamos compilar e executar o programa acima, o que produzirá os seguintes resultados. Aqui, o programa salva a saída de buffer. buffAté a primeira chamada fflush() Até, em seguida, começar a bufferizar a saída, e finalmente dormir 5 Segundos. Ele enviará o resto da saída para STDOUT antes do final do programa.

Ativar buffer completo
Aqui está oldtoolbag.com
Essa saída será salva em buff
Isso ocorrerá durante a programação
Dormir por cinco segundos no final

Biblioteca Padrão C - <stdio.h>