首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

为何scanf()不被执行面陷入死循环

2013-03-14 
为什么scanf()不被执行面陷入死循环#includestdio.hint main(void){int ibool btruewhile(b){int cc

为什么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;
}

热点排行