Являются ли getchar () эквивалентными scanf ("% c") и putchar () эквивалентными printf ("% c")? - PullRequest
7 голосов
/ 20 марта 2010

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

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

Ответы [ 2 ]

7 голосов
/ 20 марта 2010

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

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

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

char c = getchar();

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

1 голос
/ 20 марта 2010

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

...