fflush()

fflush() ist in der stdio definiert, die in C über stdio.h, bzw in C++ über cstdio eingebunden wird.

Funktion

fflush() wird dazu verwendet, den Puffer eines Streams in den Stream zu sichern.
Streams werden in der Regel zwischengepuffert, um möglichst viele Daten am Stück zu übertragen, statt Buchstabe für Buchstabe zu übertragen. Daher wird mit der Übertragung oftmals gewartet, bis ein Block voll oder eine Zeile abgeschlossen ist. Damit kann eine sofortige Ausgabe erzwungen werden, zum Beispiel, um eine Ausgabe auf dem Bildschirm zu erlangen, obwohl die Zeile nicht mit einem Newline-Zeichen abgeschlossen wurde.

Signatur

#include <stdio.h>
int fflush( FILE * file );

file: Stream, dessen Puffer übertragen werden soll

Return Value: 0 im Erfolgsfall, ansonsten EOF und errno wird gesetzt.

Fehlerquellen

-

Beispiel

Der folgende Code wird ähnlich verwendet bei setvbuf(), welches den Zwischenpuffer abschaltet, so dass fflush() nicht mehr notwendig ist.

#include <stdlib.h>
#include <stdio.h>
 
int main (void)
{
  FILE *file = fopen("logfile.txt", "w+");
 
  fprintf( file, "vor Absturz" );
  /* Kommentar in der nächsten Zeile entfernen, um zuverlässig Logfiles zu schreiben */
  // fflush( file ); 
 
  /* Absturz provozieren */ 
  *((int *)0) = 4711;
 
  /* Dieser Part wird nicht mehr erreicht */
  fprintf( file, "nach Absturz" );
 
  fclose(file);
  return EXIT_SUCCESS;
}

siehe auch