Freigeben über


fflush

Leert einen Stream.

int fflush( 
   FILE *stream 
);

Parameter

  • stream
    Zeiger auf FILE Struktur.

Rückgabewert

fflush gibt 0 zurück, wenn der Puffer erfolgreich geschrieben wurde.Der Wert 0 wird zurückgegeben, auch in den Fällen, in denen der angegebene Stream keine Puffer verfügt oder nur zum Lesen geöffnet.Der Rückgabewert EOF gibt einen Fehler an.

HinweisHinweis

Wenn fflushEOFzurückgibt, verloren gegangen Daten können aufgrund eines schreibens fehlgeschlagene.Wenn Sie einen Handler des schwer wiegenden Fehlers ist es am sichersten, installiert, setvbuf Puffern mit der Funktion zu drehen oder auf niedriger Ebene wie _openzu verwenden E/A-Routinen, funktioniert _closeanstelle der _write und Stream-E/A.

Hinweise

Die fflush-Funktion einen Stream schreibt.Wenn die Datei, die stream zugeordnet ist, für die Ausgabe geöffnet ist, schreibt fflush zu dieser Datei den Inhalt des Puffers, der dem Stream zugeordnet ist.Wenn der Stream für die Eingabe geöffnet ist, löscht fflush der Inhalt aus dem Puffer.fflush negiert den Effekt eines früheren Aufrufs von ungetc für stream.Außerdem schreibt alle fflush(NULL) Streams, die für die Ausgabe geöffnet sind.Der Stream wird nach dem Aufruf geöffnet.fflush hat keine Auswirkungen auf einen nicht zwischengespeicherten Stream.

Puffer werden in der Regel vom Betriebssystem verwaltet, die die optimale Zeitpunkt bestimmt, welche Daten automatisch auf den Datenträger zu schreiben: wenn ein Puffer voll ist, wenn ein Stream geschlossen ist oder wenn ein Programm wird beendet, normalerweise ohne den Stream zu schließen.Die Datenträgercommit Funktion mit der Laufzeitbibliothek können Sie sicherstellen, dass wichtige Daten direkt auf dem Datenträger anstelle des Betriebssystems an Puffern geschrieben werden soll.Ohne ein vorhandenes Programm neu zu schreiben, können Sie diese Funktion aktivieren, indem Sie die Objektdateien des Programms mit COMMODE.OBJ verknüpfen.In der erstellten ausführbaren Datei schreiben _flushall Aufrufe an die Inhalte aller Puffer auf dem Datenträger.Nur _flushall und fflush werden durch COMMODE.OBJ betroffen.

Informationen zum Steuern der Datenträgercommit finden Sie unter Feature Stream-E/A, fopenund _fdopen.

Diese Funktion sperrt den aufrufenden Thread und daher threadsicher.Bei einer nicht sperrend - Version finden Sie unter _fflush_nolock.

Anforderungen

Funktion

Erforderlicher Header

fflush

<stdio.h>

Um Kompatibilität zusätzlichen Informationen 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
   ist ein Test
Dies ist ein testEnter
 ein Satz von vier Wörtern mit scanf: Dies ist ein Test
Dieses -
entspricht
ein, eine, einem, einen, einer, eines
test
Geben Sie den gleichen Satz mit abruft: Dies ist ein Test
Dies ist ein Test

.NET Framework-Entsprechung

System::EA::FileStream::Leer

Siehe auch

Referenz

Stream E/A

fclose, _fcloseall

_flushall

setvbuf