Przeczytałem książkę Dennisa Ritchiego The C Programming Language, której intnależy użyć, aby zmienna mogła przechowywać EOF - aby była wystarczająco duża, aby mogła przechowywać wartość EOF - nie char. Ale następujący kod działa dobrze:
#include<stdio.h>
main() {
char c;
c=getchar();
while(c!=EOF) {
putchar(c);
c=getchar();
}
}
Gdy nie ma już danych wejściowych, getcharzwraca EOF. W powyższym programie zmienna ctypu char jest w stanie ją z powodzeniem zatrzymać.
Dlaczego to działa? Zgodnie z wyjaśnieniem w powyższej książce kod nie powinien działać.
0xff. Przechowywanie wynik getchar()w introzwiązuje tego problemu. Twoje pytanie jest zasadniczo takie samo, jak pytanie 12.1 w często zadawanych pytaniach na temat comp.lang.c , które jest doskonałym źródłem informacji. (Również main()powinno być int main(void)i nie zaszkodzi dodać return 0;przed zamknięciem }.)