getchar(), putchar(char), EOF

#include<stdio.h>
int main(){
   int c = getchar();
   while(c != EOF){
      putchar(c);
      c = getchar();
   }
}

Почему в приведенном выше коде программа не завершается сама по себе после того, как c становится EOF? Ссылка на код > Книга: K&R's The C Programming Language 2nd Edition, Страница: 18


person Akshay Deogaonkar    schedule 15.11.2017    source источник
comment
Он завершается для меня, когда я набираю ‹ctrl-D› в качестве ввода в терминале Ubuntu Linux. Простое нажатие return не приведет к тому, что getchar() вернет EOF (-1).   -  person Scooter    schedule 15.11.2017
comment
Возможный дубликат getchar() != EOF   -  person Raghav Dinesh    schedule 14.02.2019


Ответы (1)


getchar() вернет EOF, только если будет достигнут конец файла. «Файл» здесь — это сам стандартный ввод. Это можно записать как:

#include <stdio.h>
   int main()
  {
   int c;
   while ((c = getchar()) != EOF)
    {
     /*getchar() returns the the next available value which is in the input
     buffer*/    
     putchar(c);
    }
  }
person Nabid    schedule 15.11.2017
comment
Пожалуйста, убедитесь, что вы не утверждаете, что код, который вы изменили выше, сам по себе приведет к завершению программы EOF. - person Akshay Deogaonkar; 17.11.2017