У меня есть задание, когда на языке программирования C мне нужно сканировать несколько цифровых (просто целое, если оно не целое, оно должно выйти) значений с клавиатуры. Значения делятся на пробел, а вход заканчивается EOF. Мне нужно продолжить работу с этими отсканированными значениями. Я знаю максимум числа, набранных, я заранее не знаю, сколько цифр я получу.vC: сканировать числовой ввод до тех пор, пока EOF
Я пробовал:
while (scanf("%d", &a) == 1 && count <= 10000) {
eof=a;
if (eof=getchar() == EOF) break;
...
Но это не похоже на работу, как мне нужно (часто вы должны дать EOF в два раза, но не всегда, а иногда добавляет 0 к входу). То же самое происходит, когда я использую только:
while (scanf("%d", &a) == 1) {
если я пытаюсь:
while (... && (a=getchar()) != EOF) {
переменная а переписывается, и я не могу с ним работать дальше.
Заранее спасибо.
EDIT: Кроме того, мне нужно различать EOF и недопустимого ввода (что-то другое, чем номер), который я не уверен, как это сделать, потому что
scanf(...)==1
не будет делать эту работу.
При вызове 'getchar' в цикле вы получите неправильные значения при вызове' Scanf'. –
Что касается различий между различными результатами ['scanf'] (http://en.cppreference.com/w/c/io/fscanf), просто сохраните его возвращаемое значение в переменной и проверьте его. –
Сохранение возвращаемого значения из 'scanf' в переменной и проверка его по отдельности работает, это похоже на лучшее решение. Благодаря! – Luga