Função da biblioteca C - setvbuf ()
Descrição
A função da biblioteca C int setvbuf(FILE *stream, char *buffer, int mode, size_t size) define como um fluxo deve ser armazenado em buffer.
Declaração
A seguir está a declaração da função setvbuf ().
int setvbuf(FILE *stream, char *buffer, int mode, size_t size)
Parâmetros
stream - Este é o ponteiro para um objeto FILE que identifica um fluxo aberto.
buffer- Este é o buffer alocado pelo usuário. Se definida como NULL, a função aloca automaticamente um buffer do tamanho especificado.
mode - Isso especifica um modo para buffer de arquivo -
Sr. Não. | Modo e descrição |
---|---|
1 | _IOFBF Full buffering- Na saída, os dados são gravados quando o buffer está cheio. Na entrada, o buffer é preenchido quando uma operação de entrada é solicitada e o buffer está vazio. |
2 | _IOLBF Line buffering- Na saída, os dados são gravados quando um caractere de nova linha é inserido no fluxo ou quando o buffer está cheio, o que acontecer primeiro. Na entrada, o buffer é preenchido até o próximo caractere de nova linha quando uma operação de entrada é solicitada e o buffer está vazio. |
3 | _IONBF No buffering- Nenhum buffer é usado. Cada operação de E / S é gravada o mais rápido possível. Os parâmetros de buffer e tamanho são ignorados. |
size - Este é o tamanho do buffer em bytes
Valor de retorno
Esta função retorna zero em caso de sucesso, caso contrário, um valor diferente de zero é retornado.
Exemplo
O exemplo a seguir mostra o uso da função setvbuf ().
#include <stdio.h>
int main () {
char buff[1024];
memset( buff, '\0', sizeof( buff ));
fprintf(stdout, "Going to set full buffering on\n");
setvbuf(stdout, buff, _IOFBF, 1024);
fprintf(stdout, "This is tutorialspoint.com\n");
fprintf(stdout, "This output will go into buff\n");
fflush( stdout );
fprintf(stdout, "and this will appear when programm\n");
fprintf(stdout, "will come after sleeping 5 seconds\n");
sleep(5);
return(0);
}
Vamos compilar e executar o programa acima para produzir o seguinte resultado. Aqui o programa continua armazenando a saída embuffaté que enfrente a primeira chamada para fflush (), após o que começa novamente a armazenar a saída em buffer e, finalmente, dorme por 5 segundos. Ele envia a saída restante para o STDOUT antes que o programa seja lançado.
Going to set full buffering on
This is tutorialspoint.com
This output will go into buff
and this will appear when programm
will come after sleeping 5 seconds