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