1.问题代码
详细:输入一次a的值后就陷入死循环,没有下一次等待输入
猜测原因:可能是缓冲区有剩余东西,导致。
反驳:死循环scanf会把缓冲区清理干净。
#include <stdio.h>
int main()
{
int a = 0;
int a1 = 100;
while (1)
{
scanf("123%d", &a);
if (a1>a)
{
printf("66666666");
}
}
return 0;
}
2.真实原因
3.番外问题
场景:我测试输入了1234,为什么还是死循环?
原因:当然还是不符合条件
修复后代码:
#include <stdio.h>
int main()
{
int a = 0;
int a1 = 100;
while (1)
{
scanf("%d", &a);
if (a1>a)
{
printf("66666666");
}
}
return 0;
}
4.总结
还是老老实实地用printf作提示,scanf就不要往里面加提示字符了。如果非想要那样,用下面代码清空一下缓冲区也可以。
while ((c = getchar()) != '\n' && c != EOF) {} // 清空输入缓冲区