mehrmals x Zeichen aus Datei auslesen

Hi deepthroat,

Warum denn?
Weil nicht definiert ist, wann eof() wahr ist. Es kann sein, das eof() bereits wahr wird wenn ein Versuch etwas zu lesen scheitern wird, weil das Ende der Datei erreicht ist. Es gibt aber auch Implementierungen wo eof() erst wahr ist, nachdem versucht wurde etwas zu lesen. Das führt dann in der Regel dazu, das entweder eine Zeile zuwenig oder zuviel gelesen wird - je nach verwendetem System.

Außerdem ist "eof" nicht der einzige Fehlerzustand den ein Stream besitzt. Tritt z.B. ein Lesefehler oder Konvertierungsfehler auf, schaltet der Stream in den Fehlerzustand "bad" bzw. "fail". Bei "bad" ist nichts mehr zu retten; bei "fail" könnte man noch versuchen die Operation zu wiederholen. Beide Zustände haben nicht unbedingt etwas mit "eof" zu tun.

Man kann aber von einem Stream der nicht "good" ist (also in einem Fehlerzustand) nichts mehr einlesen - und somit wird auch nie eof() wahr werden. Dann kann man lange auf die Terminierung der Schleife warten.

Die Fehlerzustände muß man im normalen Programmlauf eigentlich nie abfragen. Sie sind lediglich dazu gut, um differenzieren zu können ob eine Aktion katastrophal gescheitert ist (bad) oder durch ein "normales" Ereignis (eof).

Gruß
 
Zurück