Я пытаюсь подтвердить ввод пользователя.
В случае неправильного ввода я пытаюсь попросить пользователя заново ввести правильное числовое (двойное) значение.
Программа не работает, идет бесконечный цикл.
Не могли бы вы дать мне предложение, как я могу это сделать?
Спасибо.!!
</p>
<p>int main() {</p>
<pre><code>double t; /* Input from user */
int check;
check = 0;
/* This loop is use to validate the user input. *
* For example: If the user insert a character value "x". *
* i am trying to ask the user to insert a valid numeric value. */
while (check == 0)
{
printf("Insert the value: ");
if (scanf(" %lf", &t) == 1) {
check = 1; /* Everythink okay. No loop needed */
}
else
{
printf("Failed to read double. ");
check = 0; /* loop aganin to read the value */
fflush( stdout );
}
}
return 0;
}
ожидаемые результаты:
$ ./a.out
Введите значение: X
Не удалось прочитать дважды.
Введите значение: 5
фактические результаты:
$ ./a.out
Введите значение: X
Введите значение: не удалось прочитать дважды. Введите значение: не удалось прочитать дважды. (петля) ...