24小时热门版块排行榜    

CyRhmU.jpeg
查看: 777  |  回复: 4

cryptliu

新虫 (初入文坛)

[求助] 关于 scanf 函数的问题已有4人参与

void main()
{
        int n;
        while(1!=scanf("%d",&n))
        {
                printf("hello";
        }
}

如果 输入 字母比如 a的话,程序就会不断的输出hello....,进入死循环,不会等待输入

但是,我的意图是:如果输入的不是整数,比如是a,那么scanf()的放回值 就是-1,那么就会进入循环体,输出hello

第二次循环时,先判断1!=scanf("%d",&n) 是否为真,那么就会等待输入。
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

rbs

木虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
scanf函数又不是你设计的,它怎么会按你的意图给出返回值呢?

所以你应该自己设计函数,或者按照scanf提供的功能进行使用。
2楼2014-05-12 07:38:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

L-ios

金虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
你输入a后,由于a不符合类型,scanf函数读取后,返回-1,但是并没有从输入缓冲中删除a(因为是无效输入的原因),下次输入判断又会读取a,这就是你的程序进入死循环的原因。所以你应该在循环体中做一个跳过错误输入的处理,那样才会防止你出现的无限循环。

[ 发自手机版 http://muchong.com/3g ]
3楼2014-05-13 14:02:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

speeding1989

银虫 (小有名气)

【答案】应助回帖

你可能应该用getchar()函数吧?
sss
4楼2014-05-16 21:52:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

HanoiCreaf

新虫 (初入文坛)

【答案】应助回帖

这种单输入的,只要输入是正确的,scanf()函数返回值就只有一种,应该不会分情况了吧。。。
5楼2014-05-18 13:37:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 cryptliu 的主题更新
信息提示
请填处理意见