Я прочитал в книге Денниса Ритчи « Язык программирования C», которая intдолжна использоваться для переменной, содержащей EOF - чтобы сделать ее достаточно большой, чтобы она могла содержать значение EOF, - нет char. Но следующий код работает нормально:
#include<stdio.h>
main() {
char c;
c=getchar();
while(c!=EOF) {
putchar(c);
c=getchar();
}
}
Когда больше нет ввода, getcharвозвращает EOF. И в приведенной выше программе переменная cс типом char может успешно его хранить.
Почему это работает? Согласно объяснениям в вышеприведенной книге, код не должен работать.
0xff. Сохранение результата getchar()в Ап intрешает эту проблему. Ваш вопрос по сути такой же, как вопрос 12.1 в FAQ по comp.lang.c , который является отличным ресурсом. (Кроме того, main()должно быть int main(void), и это не мешало бы добавить return 0;до закрытия }.)