Почему scanf () вызывает бесконечный цикл в этом коде?
Мы имеем небольшую C-программу, которая просто читает числа из стандартного ввода, по одному в каждом цикле цикла. Если пользователь вводит некоторое значение NaN, на консоль должна быть выведена ошибка, и запрос ввода должен вернуться снова. На входе "0"цикл должен закончиться, а количество заданных положительных / отрицательных значений должно быть выведено на консоль. Вот'С программой:
#include
int main()
{
int number, p = 0, n = 0;
while (1) {
printf("-> ");
if (scanf("%d", &number) == 0) {
printf("Err...\n");
continue;
}
if (number > 0) p++;
else if (number < 0) n++;
else break; /* 0 given */
}
printf("Read %d positive and %d negative numbers\n", p, n);
return 0;
}
Моя проблема в том, что при вводе некоторого номера (например, "а"), это приводит к записи бесконечного цикла "-> Эээ ...» вновь и вновь. Я думаю этоs проблема с scanf (), и я знаю, что эту функцию можно заменить на более безопасную, но этот пример предназначен для начинающих, знающих только о printf / scanf, if-else и loops.I '
мы уже прочитали ответы наэтот вопрос и пролистал другие вопросы, но на самом деле ничего не ответило на эту конкретную проблему.