Цитата:
Тогда что принимать за конец входного потока? Я же могу бесконечно набирать текст с клавиатуры (насколько позволяет память), как функция getch() определит эту константу и когда?
Вот что написано в википедии.
Цитата:
Для указания терминалу в UNIX "EOF" следует воспользоваться комбинацией клавиш Ctrl+D. В Windows - Ctrl+Z.
На самом деле всё сложнее. EOF не является символом.
getch() По примеру большинства функций возвращает -1 когда происходит внутренняя ошибка. Такой ошибкой является конец файла. Закрытие файла.
Всё является файлом. Так вот консольный/терминальный ввод и вывод обычно на более низком уровне представим как файлы с хэндалами 0 и 1.
getch попросту читает данные из файла и как только обнаруживает что файл закрыт то выдает код ошибки -1=EOF.
Техническая реализация зависит от ОС. Но скорее всего ОС является POSIX совместимой.
Представление ввода вывода в виде файлов удобно для реализации перенаправления ввода/вывода. К примеру в дос можно написать в терминале "test.exe <<1.txt"
По идеи если написать "test.exe <1.txt<2.txt" то вы получите два EOF.