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