Код: Выделить всё
main() {
int a, b;
while(scanf("%d %d",&a, &b) != 2)
printf("Try again: ");
}
По идее пока scanf() не вернет 2 (т.е. до тех пор пока переменным a и b не будут удачно присвоены числа), scanf() должна продолжать вызываться. А на деле при первом некорректном вводе (например, символа) происходит зацикливание (постоянно выводится "try again"). Почему?
В книге K&R есть такой пример:
Код: Выделить всё
double sum, v;
sum = 0;
while (scanf("%lf", &v) == 1)
printf("\t%.2f\n", sum += v);
return v;
И он работает корректно. В примере выше если исправить != на ==, то тоже все работает. Однако это уже не то, что надо.