Compartilhar via


fflush

Libera um fluxo.

int fflush( 
   FILE *stream 
);

Parâmetros

  • stream
    Ponteiro a estrutura de FILE .

Valor de retorno

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

Dica

Se fflush retorna EOF, os dados podem ter sido perdidos devido a uma falha de gravação.Ao configurar um manipulador de erro crítico, é mais seguro girar armazenar em buffer fora da função de setvbuf ou usar rotinas de nível baixo de E/S como _open, _close, e _write em vez de fluxo de E/S função.

Comentários

A função de fflush de um fluxo. Se o arquivo associado com stream estiver aberto para saída, fflush grava ao arquivo o conteúdo do buffer associado com o fluxo. Se o fluxo será aberto para a entrada, fflush limpa o conteúdo do buffer. fflush nega o efeito de qualquer chamada anterior a ungetc em stream. Além disso, fflush(NULL) libera todos os fluxos abertos para saída. O fluxo permanecerá aberto depois da chamada. fflush não tem nenhum efeito em um fluxo não armazenado.

Os buffers são mantidos normalmente pelo sistema operacional, que determina o tempo ótimos de gravar automaticamente os dados em disco: quando um buffer estiver concluída, quando um fluxo está fechado, ou quando um programa encerrar normalmente sem desligar o fluxo. O recurso de disco confirmação-à- da biblioteca de tempo de execução permite garantir que os dados críticos seja gravado diretamente no disco em vez de buffers do sistema operacional. Sem reescrever um programa existente, você pode habilitar esse recurso vincular os arquivos de programa do objeto com COMMODE.OBJ. No arquivo executável resultante, as chamadas para _flushall grava o conteúdo de todos os buffers em disco. Somente _flushall e fflush são afetados por COMMODE.OBJ.

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

Essa função bloqueia o thread de chamada e em virtude disso é seguro para threads. Para uma versão sem bloqueio, consulte _fflush_nolock.

Requisitos

Função

Cabeçalho necessário

fflush

<stdio.h>

Para 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
Isso é testThis

FakePre-6bb31700655c4eb9b350656999ae6992-4cfa18d97d724a6daad3d181164f2f7c

Equivalência do .NET Framework

System::IO::FileStream::Flush

Consulte também

Referência

E/S de fluxo

fclose, _fcloseall

_flushall

setvbuf