我正在尝试使用单个错误检查功能来检查多个其他功能中的错误。但是,在运行程序时,它会陷入循环并且不会中断。应用程序获得有效输入后,应继续执行下一个功能。但是它重复fStartBalance函数,即使错误检查返回0.我是一个初学者,所以我不太擅长故障排除。以下是适用的代码:
/* Begin fValidateFloat */
int fValidateFloat(float input, float minValue, float maxValue)
{
int failed = 0;
while (input < minValue)
{
printf("\nError: Input too low, please enter a value greater than or equal to %.2f.", minValue);
failed = 1;
return failed;
}
while (input > maxValue)
{
printf("\nError: Input too high, please enter a value less than or equal to %.2f.", maxValue);
failed = 1;
return failed;
}
} /* End fValidateFloat */
/* Begin fStartBalance */
float fStartBalance(void)
{
float startBalance; /* Declare variable */
int failed;
while (failed = 1)
{
printf("\n\nNow enter your current balance in dollars and cents: "); /* Prompt user to input current balance */
scanf("%f", &startBalance);
fflush(stdin);
failed = fValidateFloat(startBalance, 0, 3.4e+38);
}
return startBalance; /* Return variable */
} /* End fStartBalance */
感谢您的帮助。
答案 0 :(得分:2)
fflush(stdin);
未定义
在未执行while语句的情况下,您永远不会从fValidateFloat()
返回任何值:
return failed;
}
} /* End fValidateFloat */
在相同的函数中,while循环没有任何意义,请改用if语句:
while (input < minValue)
{
printf("\nError: Input too low, please enter a value grea%.2f.", minValue);
failed = 1;
return failed;
}
您在while循环中将失败设置为1,而不是将其与1进行比较:
while (failed = 1)