永发信息网

关于scanf与输入缓冲区的问题!

答案:3  悬赏:0  手机版
解决时间 2021-11-30 14:48
关于scanf与输入缓冲区的问题!
最佳答案
这个地方的scanf有关。这个地方score一直没有赋值成功,导致出现一直循环的状态。
在这里讲一下scanf() 怎样读取输入:
假定使用了一个%d说明符来读取一个整数。scanf() 函数开始每次读取一个输入字符,它跳过空白字符(空格、制表符和换行符)直到遇到一个非空白字符。因为它试图读取一个整数,所以scanf() 期望发现一个数字字符或者一个符号(+或者-)。
如果第一个非空白字符不是数字,将会发生什么呢?
比如说,是A而非一个数字?这时scanf() 会停在那里,并把A(或者不管是什么)放回输入。没有把任何值赋给指定的变量,程序下一次读取输入时,它就在A处重新开始。如果程序中只有%d说明符,scanf() 永远也不会越过那个A(去读下一个)。这就是造成无限循环的原因~追问开始为什么一开始输入A之类的字母就不会循环呢?而是直接结束了循环!必须要先输入数字回车,在输入字母才会出现无限的循环??追答?
一开始输A的话就会无限循环的呀追问
我用的gcc啊?真的不可以!
全部回答
while(score < 60);

这是个判断语句,若是输入的score小于60,就会进行循环。追问我想知道为什么会出现无限循环的问题!并且只有先输入一个数字的情况下再输入字母就会出现!
因为任意一个字母的ASC||码都是大于60的!最小的字母A的ASC||码是65,这样的话你的程序就不会结束!有什么疑问继续追问啊!追问额!因为65>60,所以while为假,结束循环了啊应该!!!!但是实际是在不断的循环!!!大神,请看清题目啊!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
国际慈善机构是什么?
一部电影动画,内容一姐弟,弟弟不小心吃了很
南宁中考1A3B+2B,总评B+能去哪个中学非地段
27.78x4.5-7.78x4.5
刚才不小心摸到电脑机箱 一下子 手麻了 有电
商朝的开国君主汤,有一个洗澡盆,上面刻着一段
找1976年的女儿
你喜欢她么,喜欢么?
阶梯电价的计算方法是什么?
为什么江淮瑞风车前挂现代标志
DNF为什么皮甲瞎子训练场伤害这么低 实战怎么
新羌广深港客运专线拆迁安置房怎么样?好不好
请问有PRD65-3P+N型号的浪涌吗?
葫芦娃我帮你吸出来图片
魄门亦为五脏使水谷不得久藏是什么句
推荐资讯
年内想买一套新房,30万以内,不要小产权的,
天主教宗教裁判所的最高首领叫什么?所长?
男朋友要回家,能给他梨带路上吃么?
帮我查一下这是什么字?
姓李跟姓钟匹配吗
氯的最高正价+7价高于硫的最高正价+6价为什么
成都壹酒店到火车北站地图
天之报施善人其呵如哉,,,,,怎么断句
合肥地铁坐到三孝口怎么做1路公交车
求圣斗士星矢日配中字全集完整版百度云,包括
【FreshKon菲士康哪里买好】FreshKon菲士康美
光动做完一次后需要复查吗?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?