Share via


setvbuf

Controla o fluxo de armazenamento em buffer e dimensionar do buffer.

int setvbuf(
   FILE *stream,
   char *buffer,
   int mode,
   size_t size 
);

Parâmetros

  • stream
    Ponteiro para FILE estrutura.

  • buffer
    Buffer alocada por usuário.

  • mode
    Modo de buffer.

  • size
    dimensionar do buffer em bytes.Intervalo permitido: 2 <= size<= INT_MAX (2147483647). Internamente, o valor fornecido para size é arredondado para baixo até o múltiplo mais próximo de 2.

Valor de retorno

Retorna 0 se obtiver êxito.

If stream ou buffer são um NULL ponteiro, ou se mode ou size é não dentro de uma alterar válida, o manipulador de parâmetro inválido é invocado, sistema autônomo descrito em Validação de parâmetro. Se a execução for permitida para continuar, esta função retorna -1 e define 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

The setvbuf função permite que o programa controlar tanto buffer e dimensionar de buffer stream. stream deve se referir a um arquivo em aberto que não passou por uma operação de E/s desde que ela foi aberta. A matriz apontada por buffer é usado sistema autônomo o buffer, a menos que seja NULL, caso em que setvbuf utiliza um buffer de tamanho alocado automaticamente size/ 2 * 2 bytes.

O modo deve ser _IOFBF, _IOLBF, ou _IONBF. If mode é _IOFBF ou _IOLBF, em seguida, size é usado sistema autônomo o dimensionar do buffer. If mode é _IONBF, o fluxo é sem buffer e size e buffer são ignorados. Valores de mode e seus significados são:

  • _IOFBF
    Buffer cheio, ou seja, buffer é usado sistema autônomo o buffer e size é usado sistema autônomo o dimensionar do buffer. If buffer é NULL, um buffer alocado automaticamente size bytes é usado.

  • _IOLBF
    Para alguns sistemas, isso fornece a linha de armazenamento em 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 compatibilidade, consulte Compatibilidade na introdução.

Bibliotecas

Todas as versões do C em time de execução bibliotecas.

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();
   }
}

'stream1' now has a buffer of 1024 bytes 'stream2' now has no buffer

Equivalente do NET Framework

Não aplicável. Para telefonar a função C padrão, use PInvoke. Para obter mais informações, consulte Exemplos de invocação de plataforma.

Consulte também

Referência

Fluxo de E/S

fclose, _fcloseall

fflush

fopen, _wfopen

setbuf