Почему зацикливаеться while ? - C (СИ)
Формулировка задачи:
Функция scanf() возвращает количество успешно прочитанных символов..
если в данном коде ввести НЕ число программа должна повторить цикл. так и есть но при повторном выполнении кода в цикле ф-ия scanf не выполняется ... ПОЧЕМУ идет зацикливание !!!__ ,??
do{
printf ("VVedite nomer\n");
}while (!scanf ("%i",&i));Решение задачи: «Почему зацикливаеться while ?»
textual
Листинг программы
int n, i;
char s[300];
do
{
printf ("Vvedite nomer:");
n=scanf ("%i",&i);
if(!n) gets(s);
}while(!n);
printf ("%d",i);
Объяснение кода листинга программы
- Объявлены две переменные:
nиi. - Введен цикл
do, который будет выполняться до тех пор, пока условие вwhileне станет ложным. - Внутри цикла выводится сообщение
Vvedite nomer:и происходит чтение введенного числа в переменнуюiс помощью функцииscanf. - Если чтение числа не удалось (то есть
nравно 0), то с помощью функцииgetsсчитывается строка, которую программа использует как строку-заполнитель. - После выхода из цикла
do, выводится значение переменнойi.