setbuf
Controla o buffer de fluxo. Essa função foi preterida; use setvbuf
em vez disso.
Sintaxe
void setbuf(
FILE *stream,
char *buffer
);
Parâmetros
stream
Ponteiro para a estrutura FILE
.
buffer
Buffer alocado pelo usuário.
Comentários
A função setbuf
controla o buffer para stream
. O stream
argumento deve se referir a um arquivo aberto que não foi lido ou gravado. Se o buffer
argumento for NULL
, o fluxo não será armazenado em buffer. Caso contrário, o buffer deve apontar para uma matriz de caracteres de tamanho BUFSIZ
, em que BUFSIZ
é o tamanho do buffer conforme definido em STDIO.H. O buffer especificado pelo usuário, em vez do buffer alocado do sistema padrão para o fluxo informado, é usado para buffer de E/S. O stderr
fluxo não é armazenado em buffer por padrão, mas você pode usar setbuf
para atribuir buffers a stderr
.
setbuf
foi substituído por setvbuf
, que é a rotina preferida para o novo código. Ao contrário setvbuf
do , setbuf
não tem como relatar erros. setvbuf
também permite controlar o modo de buffer e o tamanho do buffer. setbuf
existe para compatibilidade com o código existente.
Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.
Requisitos
Rotina | Cabeçalho necessário |
---|---|
setbuf |
<stdio.h> |
Para obter informações sobre compatibilidade, consulte Compatibilidade.
Exemplo
// crt_setbuf.c
// compile with: /W3
// This program first opens files named DATA1 and
// DATA2. Then it uses setbuf to give DATA1 a user-assigned
// buffer and to change DATA2 so that it has no buffer.
#include <stdio.h>
int main( void )
{
char buf[BUFSIZ];
FILE *stream1, *stream2;
fopen_s( &stream1, "data1", "a" );
fopen_s( &stream2, "data2", "w" );
if( (stream1 != NULL) && (stream2 != NULL) )
{
// "stream1" uses user-assigned buffer:
setbuf( stream1, buf ); // C4996
// Note: setbuf is deprecated; consider using setvbuf instead
printf( "stream1 set to user-defined buffer at: %Fp\n", buf );
// "stream2" is unbuffered
setbuf( stream2, NULL ); // C4996
printf( "stream2 buffering disabled\n" );
_fcloseall();
}
}
stream1 set to user-defined buffer at: 0012FCDC
stream2 buffering disabled
Confira também
E/S de fluxo
fclose
, _fcloseall
fflush
fopen
, _wfopen
setvbuf