ein Kapitel zurück                                           ein Kapitel weiter

In diesem Kapitel will ich einige Funktionen vorstellen die nicht mehr so häufig verwendet werden. Aber trotzdem will ich sie Ihnen nicht vorenthalten.

Zuerst die Funktion 'feof' hier der Syntax...

int feof(FILE *datei);

Mit dieser Funktion können sie den EOF - Fehlerflag testen ob er gesetzt ist oder nicht. Hierzu nun eine Beispiel.....

/*Download:feof.c*/
#include <stdio.h> int main() { int c; while(c=getc(stdin)) if(feof(stdin)!=0) break; else putc(c,stdout); return 0; }

Das Programm dürfte Ihnen noch vom Kapitel zuvor bekannt sein. Wir haben hier anstatt....

while((c=getc(stdin)) != EOF)

...dies verwendet...

while(c=getc(stdin))
    if(feof(stdin)!=0)

Anstatt zu testen ob der Wert von der Variablen c dem von EOF entspricht haben wir mit feof getestet ob das EOF - Flag gesetzt ist. Falls nicht gibt die Funktion einen Wert von 0 zurück, falls aber EOF gesetzt ist gib die Funktion einen Wert ungleich 0 zurück. Also eigentlich keine Verbesserung eher eine Verkomplizierung. Wenn sie jetzt in einem längeren Programm nochmals feof(..) verwenden wollen müssen sie erst mal mittels...

clearerr(stdin);

......das EOF - Flag wieder auf 0 zurücksetzen da es weiterhin gesetzt ist. Also wozu die Umstände. Machen sie es sich nicht unnötig schwer. Natürlich können sie anstatt stdin auf jede von Ihnen zuvor geöffnete Datei vom Typ FILE setzen.

Nun zu ferror. Der Syntax von ferror lautet...


int ferror(FILE *datei);

ferror ist im Prinzip Dasselbe wie feof, nur das er unser Datei auf Fehler überprüft. Auch hier ist im Prinzip dieser Aufruf....

if((quelle=fopen(argv[1],"r")) == NULL)

...Dasselbe wie....

quelle=fopen(argv[1],"r");
   if(ferror(quelle))

Auch bei ferror(..) gilt falls sie die Funktion nochmals im Programm einsetzen wollen müssen sie hier die Funktion clearerr(..) mittels...

clearerr(quelle);

...den Fehler - Flag zurücksetzen. Wen sie wollen können sie diese Funktionen ja mal in einem Programm testen. Ich erspare mir das hier.

Nur noch schnell der Syntax von clearerr()...

void clearerr(FILE *datei);

Wie man clearerr einsetzt habe ich oben schon zweimal erklärt. clearerr dient zum zurücksetzen des EOF - Flags und Fehler - Flags.

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf