getchar () эквивалентен scanf (“%c”) и putchar () эквивалентный printf (“%c”)?

a = getchar() эквивалентный scanf("%c",&a);?

putchar(a) эквивалентный printf("%c",a); где a a char переменная?

7
задан Spikatrix 2 March 2016 в 06:57
поделиться

2 ответа

Вообще говоря, да, они одинаковы.

Но они не одинаковы в нескольких придирках. Функция getchar типизирована для возврата int, а не char. Это сделано для того, чтобы getchar мог получить как все возможные значения char, так и дополнительные коды ошибок.

Таким образом, хотя следующая функция успешно компилируется в большинстве компиляторов, вы, по сути, усекаете сообщение об ошибке

char c = getchar();

Функция scanf, однако, позволяет вам использовать тип char напрямую и отделяет код ошибки от возвращаемого значения.

7
ответ дан 7 December 2019 в 05:20
поделиться

Они делают то же самое. Однако, если вы знаете, что вам нужны только символы, то getchar и putchar будут более эффективны, поскольку варианты printf и scanf будут вынуждены каждый раз разбирать строку, чтобы определить, как обработать ваш запрос. Кроме того, они могут быть вызваны в библиотеке более низкого уровня, что означает, что вам не нужно связывать printf/scanf, если они не нужны в другом месте.

1
ответ дан 7 December 2019 в 05:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: