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 argumento for NULL, o buffer 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 ao stderr.

setbuf foi substituído por setvbuf, que é a rotina preferida para o novo código. Ao contrário setvbufdo , 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, consulte Estado global na 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