Вообще говоря, да, они одинаковы.
Но они не совсем придирчивы. Функция getchar
набирается для возврата int
, а не char
. Это сделано для того, чтобы getchar
мог как все возможные значения char
, так и коды ошибок.
Таким образом, хотя в большинстве компиляторов следующее успешно компилируется, вы по существу обрезаете сообщение об ошибке
char c = getchar();
Функция scanf
, тем не менее, позволяет напрямую использовать тип char
и разделяет код ошибки на возвращаемое значение.