为什么我输入字符时会进去死循环,而不是让我再次输入
#include<stdio.h>
int main()
{
while(1){
float money;
if(scanf("%f",&money)==1){
printf("输入正确\n");
}
else{
printf("输入有误,请重新输入\n");
}}
}
[解决办法]
#include<stdio.h>
int main() {
while (1) {
float money;
if (scanf("%f", &money) == 1) {
printf("输入正确\n");
} else {
getchar(); // 读取非法字符
printf("输入有误,请重新输入\n");
}
}
return 0;
}
[解决办法]
你输入的内容不符合%f但是还是会存在于行缓冲区里,下次还会用上次输入的数据去匹配%f,所以会存在死循环;解决办法是将行缓冲清空。