Я хотел бы уточнить ответы, данные до сих пор, потому что они, кажется, используют фразы, такие как "отправить EOF", "полученный EOF", "символ EOF" и т. Д. Согласно комментариям (спасибо) к этому ответу, "отправить EOF "и" полученный EOF "являются законными терминами, но, пожалуйста, не думайте, что это персонаж.
EOF вообще не персонаж. Это значение, которое getchar () (или fgetc / getc) возвращает, если поток находится в конце файла или возникает ошибка чтения. Это просто специальное значение вне диапазона символьных значений, которое возвращает getchar (), которое указывает условие ошибки или конца файла.
Он определен стандартом C как отрицательный, тогда как getchar возвращает символы в виде знака без знака, преобразованного в int.
Редактировать: Проведя некоторое исследование, которое я должен был сделать до того, как я написал абзац, который был здесь, я понял, что некоторые из моих предположений были полностью неверными. Спасибо комментатору за указание на это.
Когда поток (такой как stdin) находится в состоянии конца файла, это условие может быть очищено снова с помощью clearerr (), и getchar () может читать больше данных из stdin.