ferror()
ist in der stdio
definiert, die in C über stdio.h
, bzw in C++ über cstdio
eingebunden wird.
ferror()
prüft, ob an einem Stream noch Daten anliegen oder der End-Of-File-Indikator gesetzt ist.
#include <stdio.h> int ferror( FILE* file);
file: Zeiger auf geöffnete Datei/Stream, der geprüft werden soll, ob der Fehler-Indikator gesetzt ist
Return Value: 0, falls kein Fehler anliegt oder im Fehlerfall ein Wert ungleich 0.
-
#include <stdio.h> #include <stdlib.h> int main (void) { FILE *file = fopen("testfile.txt", "r"); if( file ) { clearerr( file ); fprintf( file, "Hallo Welt!" ); if( ferror( file ) ) printf( "Der Fehlerindikator wurde gesetzt.\n" ); } return EXIT_SUCCESS; }
Ausgabe
Nehmen wir an, im gleichen Verzeichnis liegt die Datei 'testfile.txt', so erhalten wir folgendes Ergebnis:
Der Fehlerindikator wurde gesetzt.
Vor fprintf()
löschen wir den Fehlerindikator des Streams mit Hilfe von clearerr()
. Beim Aufruf von fprintf()
können wir also davon ausgehen, dass kein Fehler vorliegt.
Nach dem Schreibvorgang fragen wir den Fehlerspeicher des Streams ab und stellen fest, dass ein Fehler aufgetreten ist - und der kann nur bei fprintf()
aufgetreten sein.
Hier wurde eine Datei zum Lesen geöffnet („r“ bei fopen()
) und anschließend wurde versucht zu schreiben.