Документация для getchar
заключается в том, что она возвращает следующий доступный символ, приводит к unsigned char
, а затем возвращает в int
возвращаемое значение.
Причина этого заключается в том, чтобы убедиться, что все действительные символы возвращаются как положительные значения и никогда не будут сравниваться как равные EOF
, макросу, который оценивается как отрицательное целочисленное значение.
Если вы положите возвращаемое значение getchar
в char
, то в зависимости от того, является ли char
вашей реализации подписанным или неподписанным, вы можете получить ложное обнаружение EOF
, или вы можете никогда не обнаружить EOF
даже когда ты должен.
Сигнализация EOF
для библиотеки C обычно происходит автоматически при перенаправлении ввода программы из файла или конвейерного процесса. Чтобы сделать это в интерактивном режиме, зависит от вашего терминала и оболочки, но обычно в Unix это достигается с помощью Ctrl-D и в окнах Ctrl-Z на отдельной строке.