getc Vs getchar Vs Scanf для чтения символа из stdin
Из нижеуказанных трех функций:
который является лучшим для чтения персонажа из stdin и почему?
- scanf regex - C
- scanf: «% » пропускает второй вход, но «% » - нет. Зачем?
- Что означает `scanf ("% * % * c ")` означает?
- C / C ++ printf () перед вызовом scanf ()
- SegFault после scanf?
Существуют ли какие-либо известные недостатки или ограничения для любой из этих функций, что делает их лучше других?
- Как сканировать строки с пробелами в них с помощью scanf ()?
- В чем разница между спецификаторами преобразования% i и% d в форматированных IO-функциях (* printf / * scanf)
- Ищете эквивалент C # scanf
- C пропускает одну команду функции?
- Разница между scanf () и fgets ()
- что такое эквивалент Java sscanf для синтаксического анализа значений из строки с использованием известного шаблона?
- Scanf пропускает любой другой цикл while в C
- Чтение строки из ввода с символом пробела?
Если вы просто хотите прочитать один символ из stdin, то подходящий выбор – getchar()
. Если у вас более сложные требования, то getchar()
будет недостаточным.
-
getc()
позволяет вам читать из другого streamа (скажем, один, открытый с помощью функцииfopen()
); -
scanf()
позволяет вам читать больше, чем просто один символ за раз.
Наиболее распространенная ошибка при использовании getchar()
заключается в попытке использовать переменную char
для сохранения результата. Вам нужно использовать переменную int
, так как диапазон значений getchar()
возвращает «значение в диапазоне unsigned char
, плюс одно отрицательное значение EOF
». Переменная char
не имеет достаточного диапазона для этого, что может означать, что вы можете путать полностью верный возврат символа с EOF
. То же самое относится к getc()
.
из руководства Beej по программированию на C
Все эти функции так или иначе читают один символ из консоли или из ФАЙЛА. Различия довольно незначительные, и вот описания:
getc () возвращает символ из указанного FILE. С точки зрения использования, это эквивалентно одному вызову fgetc (), а fgetc () является более распространенным для просмотра. Различается только реализация этих двух функций.
fgetc () возвращает символ из указанного FILE. С точки зрения использования это эквивалентно тому же вызову getc (), за исключением того, что fgetc () является более распространенным для просмотра. Различается только реализация этих двух функций.
Да, я обманул и использовал cut-n-paste, чтобы сделать этот последний абзац.
getchar () возвращает символ из stdin. Фактически, это то же самое, что вызов getc (stdin).