У меня есть следующий код, чтобы спросить пользователя для ввода (lowWarp). Вход должен быть от 1,0 до 10,0. Если я вхожу, скажем, 0,2, это позволяет мне попытаться ввести другое значение. Однако, если я ввешу что-то вроде 1/2 или asdf, он начнет бесконечно зацикливаться. Как предотвратить это и вместо этого ввести правильное значение?Как проверить правильность ввода данных в C
while (badData == true)
{
printf("Enter the low warp factor; warp factor = \n");
scanf_s("%f", &lowWarp);
if (lowWarp < 1.0 || lowWarp > 10.0) //Determines if number is between 1.0 - 10.0
{
badData = true;
printf("Invalid input! Range is 1.0 - 10.0.\n");
lowWarp = 0.0;
}
else
{
badData = false;
}
}
Прочитайте ввод с помощью 'fgets()', а затем проанализируйте его. – chux
Возможный дубликат [Проверка ввода с помощью scanf()] (http://stackoverflow.com/questions/15228388/input-validation-using-scanf) – perror
Для интерактивных сеансов всегда * читайте целую строку *. –