Udostępnij za pośrednictwem


fflush

Liczba opróżnień strumienia.

int fflush( 
   FILE *stream 
);

Parametry

  • stream
    Wskaźnik, aby FILE struktury.

Wartość zwracana

fflushZwraca wartość 0, jeśli bufor został pomyślnie opróżniony.Wartość 0 jest również zwracana w przypadkach, w których podany strumień buforu nie ma lub jest otwarty do odczytu tylko.Zwracana wartość wynosząca EOF wskazuje na błąd.

[!UWAGA]

Jeśli fflush zwraca EOF, dane zostały utracone z powodu błędu zapisu.Podczas konfigurowania obsługi błędów krytycznych, jest najbezpieczniejsza wyłączyć buforowanie z setvbuf funkcji lub używać procedur wejścia/wyjścia niskiego poziomu, takich jak _open, _close, i _write zamiast funkcji strumień we/wy.

Uwagi

fflush Funkcji opróżnia strumienia.Jeśli plik skojarzony z stream jest otwarty dla operacji output, fflush zapisuje zawartość buforu, skojarzone z strumienia tego pliku.Jeżeli strumień jest otwarty dla danych wejściowych, fflush Czyści zawartość buforu.fflushNegacja efekt wszelkie wcześniejsze wywołanie ungetc przeciwko stream.Ponadto fflush(NULL) opróżnia wszystkie strumienie otwarty dla operacji output.Strumień pozostaje otwarty po wywołaniu.fflushnie ma wpływu na niebuforowanego strumienia.

Bufory są normalnie utrzymywane przez system operacyjny, który określa czas optymalnej, aby automatycznie zapisywać dane na dysku: gdy bufor jest pełny, gdy strumień jest zamknięty, lub gdy program kończy się zwykle bez zamykania strumienia.Funkcji commit na dysku z biblioteki uruchomieniowej pozwala zapewnić, że krytyczne dane były zapisywane bezpośrednio na dysku, a nie do buforów systemu operacyjnego.Bez poprawiania istniejącego programu, można włączyć tę funkcję przez łączenie plików obiektu programu z COMMODE.OBJ.W wynikowym pliku wykonywalnym, wymaga aby _flushall zapisać zawartość wszystkich buforów dysku.Tylko _flushall i fflush jest narażony na COMMODE.OBJ.

Uzyskać informacje o sterowaniu funkcji commit na dysku, zobacz Strumień we/wy, fopen, i _fdopen.

Ta funkcja blokuje wywołującego wątku i dlatego wielowątkowość.Blokowania wersji, zobacz _fflush_nolock.

Wymagania

Funkcja

Wymaganego nagłówka

fflush

<stdio.h>

Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.

Przykład

// 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 );
}
  To jest test
To jest test
  to jest test
To jest test
wprowadzić zdanie cztery słowa z scanf: to jest test
To
jest
a
Test
Wprowadź tego samego zdania z pobiera: to jest test
To jest test

Odpowiednik w programie .NET Framework

System::IO::FileStream::Flush

Zobacz też

Informacje

We/Wy strumienia

fclose, _fcloseall

_flushall

setvbuf