У меня небольшая C-программа, которая просто считывает числа из stdin, по одному в каждом цикле цикла. Если пользователь вводит несколько NaN, на консоль должна быть напечатана ошибка, и приглашение ввода должно вернуться снова. При вводе "0" цикл должен заканчиваться, и количество заданных положительных/отрицательных значений должно быть напечатано на консоли. Здесь программа:
#include <stdio.h>
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;
}
Моя проблема заключается в том, что при вводе некоторого не числа (например, "a" ) это приводит к бесконечному циклу, пишущему "- > Err..." снова и снова. Я предполагаю, что это проблема scanf(), и я знаю, что эта функция может быть заменена более безопасной, но этот пример для новичков, зная только о printf/scanf, if-else и циклах.
Я уже прочитал ответы на этот вопрос и просмотрел другие вопросы, но ничего не ответил на эту конкретную проблему.