Если вы просто хотите прочитать один символ из стандартного ввода, тогда getchar()
является подходящим выбором. Если у вас есть более сложные требования, то getchar()
будет недостаточно.
getc()
позволяет читать из другого потока (скажем, тот, который открыт с fopen()
);
scanf()
позволяет вам читать больше, чем один символ за раз.
Самая распространенная ошибка при использовании getchar()
- попытка использовать переменную char
для сохранения результата. Вам необходимо использовать переменную int
, поскольку диапазон значений, возвращаемых getchar()
, равен «значению в диапазоне unsigned char
плюс одно отрицательное значение EOF
». Переменная char
не имеет достаточного диапазона для этого, что может означать, что вы можете перепутать полностью допустимый символ возврата с EOF
. То же относится и к getc()
.