为什么scanf()不被执行面陷入死循环
#include<stdio.h>
int main(void)
{
int i;
bool b=true;
while(b)
{ int c;
c=scanf("%d",&i);
printf("%d\n",c);
if(c==1)
b=false;
else
printf("your input wrong,you can input only a charactr,try again\n");
}
printf("the num is:%d",i);
return 0;
}
[解决办法]
#include<stdio.h>
int main(void)
{
int i;
int b = 1;
while(b)
{
int c;
c=scanf("%d",&i); // 当你输入一个字符,如:'a'时,此时'a'并不是一个符合scanf格式化的一个输入,因为格式化要求输入一个整数,所以输入成功的个数就0,也就是c=0
// 此时程序进入下一个循环,由于上次的'a'并不符合格式化输入,所以'a'被缓冲,放到下一个scanf输入中,此时'a'又不符合规定,就进入下一个循环,这样就形成了死循环
printf("%d\n",c);
if(c==1)
b=0;
else
printf("your?input?wrong,you?can?input?only?a?charactr,try?again\n");
}
printf("the?num?is:%d",i);
return 0;
}