Ich habe in Dennis Ritchies Buch The C Programming Language gelesen, dass inteine 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 getcharEOF zurückgegeben. Und im obigen Programm kann die Variable cmit 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 intlö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 }.)