Ich habe in Dennis Ritchies Buch The C Programming Language gelesen, dass int
eine Variable verwendet werden muss, um EOF zu halten - um sie so groß zu machen, dass sie EOF-Werte enthalten kann - nicht char
. Der folgende Code funktioniert jedoch einwandfrei:
#include<stdio.h>
main() {
char c;
c=getchar();
while(c!=EOF) {
putchar(c);
c=getchar();
}
}
Wenn keine Eingabe mehr erfolgt, wird getchar
EOF zurückgegeben. Und im obigen Programm kann die Variable c
mit dem Typ char sie erfolgreich halten.
Warum funktioniert das? Gemäß der Erklärung in dem oben erwähnten Buch sollte der Code nicht funktionieren.
0xff
. Das Speichern des Ergebnisses getchar()
in int
löst dieses Problem. Ihre Frage entspricht im Wesentlichen der Frage 12.1 in den häufig gestellten Fragen zu comp.lang.c. Dies ist eine hervorragende Ressource. (Sollte auch main()
sein int main(void)
, und es würde nicht schaden, return 0;
vor dem Abschluss ein hinzuzufügen }
.)