Я прочитал в книге Денниса Ритчи « Язык программирования 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;
до закрытия }
.)