Зацикливается программа при проверке корректность ввода - C (СИ)
Формулировка задачи:
Добавил в программу проверку на корректный ввод:
Но почему-то программа зацикливается и не дает мне повторно ввести правильное число.
flag=scanf("%d",&l.num[i]);
while (1>flag)
{
puts("Vvodit mojno tolko celie chisla\nPovtorite Vvod\n");
flag=scanf("%d",&l.num[i]);
}Решение задачи: «Зацикливается программа при проверке корректность ввода»
textual
Листинг программы
int CheckValue(int *a){
int flag;
for (;;){
flag=scanf("%d",a);
if (!flag){
printf("Chislo mojet bitb tolko celim\nvvedite korrectnie dannie\n");
scanf("%*c");
}
else return 0;
}
}
Объяснение кода листинга программы
- Объявлена функция CheckValue, которая принимает в качестве аргумента указатель на целое число.
- Внутри функции объявлена переменная flag типа int, которая инициализируется значением 1.
- Далее, в цикле while (1) происходит проверка значения переменной flag.
- Если flag равно 0, то выводится сообщение об ошибке и с помощью функции scanf считывается символ, который игнорируется.
- Если flag не равно 0, то функция возвращает 0.
- В конце функции отсутствует оператор return, поэтому, если условие в цикле while (1) не выполняется, программа будет выполняться бесконечно.