Verständnisproblem: End Of File

Gast #2724509
Lesenswert?

Hi,
ich lese auf meinem PC eine Datei mit C ein. Das Prinzip sieht so aus:
1
while(byte != EOF)
2
{
3
   byte = getc(input);
4
   ...
5
}

input ist hier ein File-Pointer, und byte ein char. Das Problem: Wenn 
nun ein Byte in der Datei den gleichen Wert wie EOF enthält, terminiert 
die Schleife ungewollt, sie soll bis zum Dateiende durchlaufen. Gibt's 
da Möglichkeiten, dass zu verhindern?

MfG
HiHel
#2724515
Lesenswert?

Hilfreicher Helfer schrieb:

> die Schleife ungewollt, sie soll bis zum Dateiende durchlaufen. Gibt's
> da Möglichkeiten, dass zu verhindern?

getc liefert aus gutem Grund einen int und keinen unsigned char
Damit KANN kein Byte in deinem File denselben Wert haben.
Du musst getc in einen int einlesen lassen und nur dann, wenn das nicht 
gleich mit EOF ist, erst dann kannst du das in Form eines unsigned char 
verwenden.
1
  int c;
2

3
  while ((c = fgetc(ptr)) != EOF)
4
  {
5
    ... mach was mit c
6
  }

Siehe zum Beispiel
Kernighan&Ritchie
Programmieren in C

irgendwo ganz am Anfang des Buches, wenn es das erste mal ums Lesen aus 
einem Stream geht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren