Freigeben über


fflush

Leert einen Stream.

int fflush( 
   FILE *stream 
);

Parameter

  • stream
    Zeiger zur FILE-Struktur.

Rückgabewert

fflush gibt 0 zurück, wenn der Puffer erfolgreich geleert wurde. Der Wert 0 wird auch zurückgegeben in Fällen, in denen der angegebene Stream keinen Puffer hat oder ist nur für Lesezwecke geöffnet. Bei dem Rückgabewert EOF gibt einen Fehler an.

Hinweis

Wenn fflushEOF zurückgibt, verloren gegangen Daten möglicherweise aufgrund eines schreibensfehlers.Wenn Sie einen Handler des schwer wiegender Fehlers installiert, ist es am sichersten, weg puffern mit der Funktion setvbuf zu drehen oder auf niedriger Ebene wie _open zu verwenden E/A-Routinen, funktioniert _close und _write anstelle der Stream-E/A.

Hinweise

Die fflush-Funktion leert einen Stream. Wenn die Datei, die stream zugeordnet ist, für Ausgabezwecke geöffnet ist, wird fflush in der Datei der Inhalt des Puffers, der dem Stream zugeordnet ist. Wenn der Stream für die Eingabe geöffnet ist, werden fflush den Inhalt aus dem Puffer. fflush negiert die Auswirkung jedes früheren Aufrufs von ungetc für stream. Auch fflush(NULL) löscht alle Streams, die für die Ausgabe geöffnet sind. Der Stream bleibt nach dem Aufruf geöffnet. fflush hat keine Auswirkungen auf einen nicht zwischengespeicherten Stream.

Puffer werden normalerweise vom Betriebssystem verwaltet, das die optimale Zeit bestimmt, die Daten auf dem Datenträger automatisch zu schreiben: wenn ein Puffer ist voll, wenn ein Stream geschlossen wird oder wenn ein Programm normalerweise wird beendet, ohne den Stream zu schließen. Die Datenträgercommitfunktion der Laufzeitbibliothek können Sie sicherstellen, dass wichtige Daten direkt auf dem Datenträger statt zu den Betriebssystempuffern geschrieben werden. Ohne ein vorhandenes Programm umzuschreiben, können Sie diese Funktion aktivieren, indem Sie die Objektdateien des Programms mit COMMODE.OBJ verknüpfen. In der resultierenden ausführbaren Datei schreiben Aufrufe von _flushall den Inhalt aller Puffer auf den Datenträger. Nur _flushall und fflush werden von COMMODE.OBJ beeinflusst.

Weitere Informationen zum Steuern der Datenträgercommitfunktion finden Sie unter Stream-E/A, fopen und _fdopen.

Diese Funktion sperrt den aufrufenden Thread und daher threadsicher. Eine nicht sperrende Version finden Sie unter _fflush_nolock.

Anforderungen

Funktion

Erforderlicher Header

fflush

<stdio.h>

Zusätzliche Informationen zur Kompatibilität finden Sie unter Kompatibilität in der Einführung.

Beispiel

// 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 );
}
  Dies ist ein Test
Dies ist testThis

FakePre-a52f5e63451e4732aaaa1a4442c84e4d-6b66c3e4ca4049f2afe9fb938fa3afd9

.NET Framework-Entsprechung

System::IO::FileStream::Flush

Siehe auch

Referenz

Stream-E/A

fclose, _fcloseall

_flushall

setvbuf