Share via


fflush

Libera um fluxo.

int fflush( 
   FILE *stream 
);

Parâmetros

  • stream
    Ponteiro para FILE estrutura.

Valor de retorno

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

Observação:

Se fflush Retorna EOF, dados podem ter sido perdidos devido a uma falha de gravar. Ao configurar um manipulador de erro crítico, é mais segura desativar o buffer com o setvbuf função ou usar rotinas de E/sistema autônomo de nível inferior, sistema autônomo _open, _close, e _write em vez das funções de fluxo de E/sistema autônomo.

Comentários

The fflush função libera um fluxo. Se o arquivo associado stream está em aberto para saída, fflush grava o Sumário do buffer associado com o fluxo para esse arquivo. Se o fluxo está em aberto para entrada, fflush Limpa o Sumário do buffer. fflush anula o efeito de qualquer telefonar anterior ao ungetc contra stream. Além disso, fflush(NULL) libera todos os fluxos de dados abertos para saída. O fluxo permanece em aberto após a telefonar.fflush nã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 confirmar em disco da biblioteca de time de execução permite assegurar que os dados críticos sejam gravados diretamente para disco em vez de buffers do sistema operacional.Sem reconfiguração de um programa existente, você pode ativar esse recurso vinculando arquivos de objeto do programa com COMMODE.OBJ.No arquivo executável do resultante, chama o _flushall gravar o Sumário de todos os buffers no disco. Apenas _flushall e fflush são afetados por COMMODE.OBJ.

Para obter informações sobre como controlar o recurso de confirmar em disco, consulte Fluxo de E/S, fopen, and _fdopen.

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

Requisitos

Função

Cabeçalho necessário

fflush

<stdio.h>

Para obter informações adicionais 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 );
}

This is a test This is a test

Enter a sentence of four words with scanf: This is a test This is a test Enter the same sentence with gets: This is a test This is a test

Equivalente do NET Framework

sistema::IO::FileStream::Flush

Consulte também

Referência

Fluxo de E/S

fclose, _fcloseall

_flushall

setvbuf