我开始学习C并且我仍然处于简单的程序但是有很多错误:/ 一旦它捕获了错误的输入(在else语句中),下面的代码将继续运行,并且它不会停止进行下一次扫描...为什么会发生这种情况?
const float inch_to_cm = 2.54;
int main()
{
bool run = true;
float usr_input;
while(run){
printf("Please enter the inches: ");
if (scanf("%f", &usr_input) == 1){
printf("Result: %4.2f \n", inch_to_cm*usr_input);
run = false;
}
else{
printf("I asked for a number!\n");
}
}
return 0;
}
答案 0 :(得分:4)
如果您输入的数字不是数值,那么scanf
将无法读取它并在那里生活无限时间导致无限循环。您必须刷新输入缓冲区。将其放在else
声明之后:
int c;
while((c = getchar()) != '\n' && c != EOF);