Я столкнулся с небольшой проблемой, когда играю с scanf
... если быть более точным, я хотел бы прочитать весь ввод и затем проигнорировать все остальное.позвольте мне показать вам, что я имею в виду:
#include <stdio.h>
int main(void)
{
int number_of_iterations = 1;
int circles = 0;
scanf("%d", &number_of_iterations);
unsigned int chr[number_of_iterations][8];
while (number_of_iterations > circles) {
scanf("%x", chr[circles]);
circles++;
}
int circles2 = 0;
while (circles2 < circles){
printf("%x \n", chr[circles2]);
circles2++;
}
return 0;
}
Это займет X входов, но если я введу что-то вроде этого:
1 1CAAC
28 EAAEB5
F489AD95
CAAC
28 EAAEB5
F489AD95 F489AD95 EAAEB5
F489AD95 F489AD95
вход будет принимать 1 1CAAC
но я хочу, чтобы все остальное читалось, но выбрасывалось ... есть ли какая-либо функция для этого?
Dominiks-MacBook-Pro-2:testing stylez$ ./a.out
1 1CAAC
28 EAAEB5
F489AD95
CAAC
28 EAAEB5
F489AD95 F489AD95 EAAEB5
F489AD95 F489AD95e30ca8c0Dominiks-MacBook-Pro-2:testing stylez$
Dominiks-MacBook-Pro-2:testing stylez$ 28 EAAEB5
bash: 28: command not found
Dominiks-MacBook-Pro-2:testing stylez$ F489AD95
bash: F489AD95: command not found
Dominiks-MacBook-Pro-2:testing stylez$ CAAC
bash: CAAC: command not found
Dominiks-MacBook-Pro-2:testing stylez$
Dominiks-MacBook-Pro-2:testing stylez$ 28 EAAEB5
bash: 28: command not found
Dominiks-MacBook-Pro-2:testing stylez$ F489AD95 F489AD95 EAAEB5
bash: F489AD95: command not found
Отредактированный код от одного ответчика (тестирование кодачтобы понять, как это работает)
#include <stdio.h>
int consume_line(void) {
int ch;
while ((ch = fgetc(stdin)) != '\n') && ch != EOF) {
;
}
return ch;
}
int main(void)
{
int number_of_iterations = 1;
int circles = 0;
int cnt;
switch (scanf("%d", &number_of_iterations)) {
case 1: consume_line(); break;
case 0: consume_line(); /* Decide if code should re-try reading, etc. */ break;
case EOF:
printf("hello");// Decide what to do if End-Of-File or rare Low-Level-Input-Error occurred.
}
return 0;
}