setvbuf
Controla o buffer de fluxo e o tamanho do buffer.
int setvbuf(
FILE *stream,
char *buffer,
int mode,
size_t size
);
Parâmetros
stream
Ponteiro para FILE estrutura.buffer
Buffer alocado pelo usuário.mode
Modo de armazenamento em buffer.size
Tamanho do buffer em bytes.Intervalo permitido: 2 < = size < = INT_MAX (2147483647).Internamente, o valor fornecido para size é arredondado para baixo até o próximo múltiplo de 2.
Valor de retorno
Retorna 0 se obtiver êxito.
Se stream é NULL, ou se mode ou size é não dentro de uma alteração válida, o manipulador de parâmetro inválido é invocado, conforme descrito em Validação de parâmetro.Se a execução terá permissão para continuar, esta função retornará -1 e conjuntos de errno para EINVAL.
Para obter informações sobre estes e outros códigos de erro, consulte _doserrno, errno, _sys_errlist e _sys_nerr.
Comentários
O setvbuf função permite que o programa para controlar os dois buffer e buffer de tamanho para stream.streamdeve se referir a um arquivo aberto que não passou por uma operação de e/S desde que ela foi aberta.A matriz apontada por buffer é usado como o buffer, a menos que ele seja NULL, caso em que setvbuf utiliza um buffer alocado automaticamente do comprimento da size/2 * 2 bytes.
The mode must be _IOFBF, _IOLBF, or _IONBF.Se mode é _IOFBF ou _IOLBF, em seguida, size é usado como o tamanho do buffer.Se mode é _IONBF, o fluxo é sem buffer e size e buffer são ignoradas.Os valores de mode e seus significados são:
_IOFBF
Buffer completo; ou seja, buffer é usado como o buffer e size é usado como o tamanho do buffer.Se buffer é NULL, um buffer alocado automaticamente size bytes de comprimento é usado._IOLBF
Para alguns sistemas, isso fornece a linha buffer.No entanto, para Win32, o comportamento é igual a _IOFBF -buffer completo._IONBF
Nenhum buffer é usado, independentemente de buffer ou size.
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
setvbuf |
<stdio.h> |
Para obter informações adicionais de compatibilidade, consulte compatibilidade na introdução.
Bibliotecas
Todas as versões da bibliotecas de tempo de execução c.
Exemplo
// crt_setvbuf.c
// This program opens two streams: stream1
// and stream2. It then uses setvbuf to give stream1 a
// user-defined buffer of 1024 bytes and stream2 no buffer.
//
#include <stdio.h>
int main( void )
{
char buf[1024];
FILE *stream1, *stream2;
if( fopen_s( &stream1, "data1", "a" ) == 0 &&
fopen_s( &stream2, "data2", "w" ) == 0 )
{
if( setvbuf( stream1, buf, _IOFBF, sizeof( buf ) ) != 0 )
printf( "Incorrect type or size of buffer for stream1\n" );
else
printf( "'stream1' now has a buffer of 1024 bytes\n" );
if( setvbuf( stream2, NULL, _IONBF, 0 ) != 0 )
printf( "Incorrect type or size of buffer for stream2\n" );
else
printf( "'stream2' now has no buffer\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.