Является ли getchar() эквивалентным scanf(“%c”), а putchar() эквивалентным printf(“%c”)?
Вопрос
Является a = getchar()
эквивалентно scanf("%c",&a);
?
Является putchar(a)
эквивалентно printf("%c",a);
где a
является char
переменная?
Решение
Вообще говоря, да, это одно и то же.
Но они не бывают несколько придирчивыми.Функция getchar
вводится для возврата int
и не char
.Это делается для того , чтобы getchar
могут ли оба все возможные char
значения и, дополнительно, коды ошибок.
Таким образом, в то время как следующее успешно компилируется в большинстве компиляторов, вы, по сути, удаляете сообщение об ошибке
char c = getchar();
Функция scanf
, однако, позволяет вам использовать char
введите напрямую и выделите код ошибки в возвращаемое значение.
Другие советы
Здесь они делают то же самое.Однако, если вы знаете, что вы просто играете персонажей, то getchar
и putchar
будет более эффективным, поскольку printf
и scanf
вариантам придется каждый раз анализировать строку, чтобы определить, как обработать ваш запрос.Кроме того, они могут быть вызваны в библиотеке более низкого уровня, что означает, что вам, возможно, не придется иметь printf
/scanf
связаны, если они не нужны в другом месте.