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