====== fflush() ====== ''fflush()'' ist in der ''[[c:lib:stdio:start|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 int fflush( FILE * file ); **file**: Stream, dessen Puffer übertragen werden soll \\ \\ **Return Value**: 0 im Erfolgsfall, ansonsten EOF und ''[[c:lib:errno: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 #include 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 ===== [[c:lib:stdio:start|stdio]]: [[c:lib:stdio:setbuf()]], [[c:lib:stdio:setvbuf()]]