setbuf
Buffer de fluxo de controles.Esta função está obsoleto; Use setvbuf em vez disso.
void setbuf(
FILE *stream,
char *buffer
);
Parâmetros
stream
Ponteiro para FILE estrutura.buffer
Buffer alocado pelo usuário.
Comentários
O setbuf controles de armazenamento em buffer para funcionar stream.O stream argumento deve se referir a um arquivo aberto que não foram lido ou gravado.Se a buffer argumento é NULL, o fluxo é sem buffer.Se não, o buffer deve apontar para uma matriz de caracteres de comprimento BUFSIZ, onde BUFSIZ é o tamanho do buffer, conforme definido na STDIO.H.O buffer especificado pelo usuário, em vez do padrão alocada pelo sistema buffer para o fluxo determinado, é usado para i/O armazenamento em buffer.O stderr o fluxo está sem buffer, por padrão, mas você pode usar setbuf para atribuir os buffers para stderr.
setbuffoi substituído pelo setvbuf, que é a rotina preferencial para o novo código.setbufé mantido para compatibilidade com o código existente.
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
setbuf |
<stdio.h> |
Para obter informações adicionais de compatibilidade, consulte compatibilidade na introdução.
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();
}
}
Equivalência do .NET Framework
Não aplicável. Para chamar a função c padrão, use PInvoke. Para obter mais informações, consulte Exemplos de invocação de plataforma.