Конец файла (EOF) в C

В настоящее время я читаю книгу «Язык программирования C» от ​​Ritchie & Kernighan. И меня очень смущает использование EOF в функции getchar () .

Во-первых, я хочу знать, почему значение EOF равно -1 и почему значение getchar ()! = EOF равно 0. Простите за вопрос, но я действительно не понимаю. Я очень старался, но не могу.

Затем я попытался запустить в книге пример, который может подсчитывать количество символов, используя приведенный ниже код, но мне кажется, что я никогда не выхожу из цикла, даже если нажимаю клавишу ввода, поэтому мне интересно, когда я достигну EOF ?

main(){
   long nc;
   nc = 0;
   while (getchar() != EOF)
       ++nc;
   printf("%ld\n", nc);
}

Затем я прочитал ту же проблему в Проблема с EOF в C . Большинство людей советовали вместо использования EOF использовать терминатор \ n или нулевой терминатор '\ 0', что имеет большой смысл.

Означает ли это, что пример в книге служит другой цели?

60
задан Community 23 May 2017 в 11:54
поделиться