getchar()
возвращает значение символа, преобразованного в unsigned char
или EOF
в случае ошибки.
Ошибка может быть «конец файла» или что-то еще; обычно (для getchar()
) программисту нет дела до ошибки, просто ошибка произошла.
scanf()
возвращает количество сопоставленных и присвоенных значений (обычно это число %
в строке формата) или EOF
в случае ошибки. Обратите внимание, что число может быть меньше числа %
в случае, например, плохо отформатированного ввода
Как и для getchar()
, ошибка может быть «концом файла» или чем-то еще. В частности, чтение меньше числа %
не является ошибкой .
Таким образом, вы можете предпочесть проверить правильное количество назначений, а не проверять на наличие ошибок в scanf()
#include <stdio.h>
int main(void) {
int x;
while (scanf("%d", &x) != 1) {
/*Ctrl + z + Enter*/
printf("x=%d\n", x);
}
return 0;
}