fflush

Libera um fluxo.

int fflush( 
   FILE *stream 
);

Parâmetros

  • stream
    Ponteiro para FILE estrutura.

Valor de retorno

fflushRetorna 0 se o buffer foi liberado com êxito.O valor 0 também é retornado nos casos em que o fluxo especificado nenhum buffer está aberto ou somente para leitura.Um valor de retorno de EOF indica um erro.

ObservaçãoObservação

Se fflush retorna EOF, dados podem ter sido perdidos devido a uma falha de gravação.Ao configurar um manipulador de erro crítico, é mais seguro desativar o armazenamento em buffer com o setvbuf função ou usar rotinas de i/O de baixo nível, como _open, _close, e _write em vez das funções de fluxo de i/O.

Comentários

O fflush função libera um fluxo.Se o arquivo associado stream é aberto para output, fflush grava o conteúdo do buffer associado com o fluxo nesse arquivo.Se o fluxo está aberto para entrada, fflush limpa o conteúdo do buffer.fflushanula o efeito de qualquer chamada anterior ao ungetc contra stream.Além disso, fflush(NULL) libera todos os fluxos abertos para saída.O fluxo permanece aberto após a chamada.fflushnão tem efeito sobre um fluxo sem buffer.

Buffers normalmente são mantidos pelo sistema operacional, que determina o momento ideal para gravar os dados automaticamente para o disco: quando um buffer está cheio, quando um fluxo está fechado ou quando um programa normalmente termina sem fechar o fluxo.O recurso de confirmação em disco da biblioteca de tempo de execução permite assegurar que os dados críticos sejam gravados diretamente no disco em vez dos buffers do sistema operacional.Sem reescrever um programa existente, você pode habilitar esse recurso vinculando arquivos de objeto do programa com COMMODE.OBJ.No arquivo executável resultante, chamadas para _flushall o conteúdo de todos os buffers de gravação em disco.Somente _flushall e fflush são afetados por COMMODE.OBJ.

Para obter informações sobre como controlar o recurso de confirmação em disco, consulte E/S de fluxo de, fopen, e _fdopen.

Esta função bloqueia o segmento de chamada e, portanto, é thread-safe.Para obter uma versão não-bloqueio, consulte _fflush_nolock.

Requisitos

Função

Cabeçalho necessário

fflush

<stdio.h>

Para obter informações adicionais de compatibilidade, consulte compatibilidade na introdução.

Exemplo

// crt_fflush.c
#include <stdio.h>
#include <conio.h>

int main( void )
{
   int integer;
   char string[81];

   // Read each word as a string.
   printf( "Enter a sentence of four words with scanf: " );
   for( integer = 0; integer < 4; integer++ )
   {
      scanf_s( "%s", string, sizeof(string) );      
      printf( "%s\n", string );
   }

   // You must flush the input buffer before using gets. 
   // fflush on input stream is an extension to the C standard 
   fflush( stdin );   
   printf( "Enter the same sentence with gets: " );
   gets_s( string, sizeof(string) );
   printf( "%s\n", string );
}
  Este é um teste
Este é um teste
  Este é um teste
Este é um teste
digite uma frase com quatro palavras com scanf: Este é um teste
Isso
é
um
teste
Digite a mesma sentença com gets: Este é um teste
Este é um teste

Equivalência do .NET Framework

System::IO::FileStream::flush

Consulte também

Referência

Fluxo de i/O

fclose, _fcloseall

_flushall

setvbuf