Ну, EOF
не сохраняется в конце файла и не char
.EOF
- это сообщение об ошибке, которое функции чтения возвращают, когда нет больше данных для чтения.По этой причине getchar
возвращает int
- он может вернуть char
, преобразованный в int
, или int
EOF
(что недопустимо char
, поэтому, если вы его получили,может быть уверен, что вы пропустили конец файла).