关于scanf与输入缓冲区的问题!
答案:3 悬赏:0 手机版
解决时间 2021-11-30 14:48
- 提问者网友:精神病院里
- 2021-11-30 11:34
关于scanf与输入缓冲区的问题!
最佳答案
- 五星知识达人网友:北城痞子
- 2021-11-30 13:00
这个地方的scanf有关。这个地方score一直没有赋值成功,导致出现一直循环的状态。
在这里讲一下scanf() 怎样读取输入:
假定使用了一个%d说明符来读取一个整数。scanf() 函数开始每次读取一个输入字符,它跳过空白字符(空格、制表符和换行符)直到遇到一个非空白字符。因为它试图读取一个整数,所以scanf() 期望发现一个数字字符或者一个符号(+或者-)。
如果第一个非空白字符不是数字,将会发生什么呢?
比如说,是A而非一个数字?这时scanf() 会停在那里,并把A(或者不管是什么)放回输入。没有把任何值赋给指定的变量,程序下一次读取输入时,它就在A处重新开始。如果程序中只有%d说明符,scanf() 永远也不会越过那个A(去读下一个)。这就是造成无限循环的原因~追问开始为什么一开始输入A之类的字母就不会循环呢?而是直接结束了循环!必须要先输入数字回车,在输入字母才会出现无限的循环??追答?
一开始输A的话就会无限循环的呀追问
我用的gcc啊?真的不可以!
在这里讲一下scanf() 怎样读取输入:
假定使用了一个%d说明符来读取一个整数。scanf() 函数开始每次读取一个输入字符,它跳过空白字符(空格、制表符和换行符)直到遇到一个非空白字符。因为它试图读取一个整数,所以scanf() 期望发现一个数字字符或者一个符号(+或者-)。
如果第一个非空白字符不是数字,将会发生什么呢?
比如说,是A而非一个数字?这时scanf() 会停在那里,并把A(或者不管是什么)放回输入。没有把任何值赋给指定的变量,程序下一次读取输入时,它就在A处重新开始。如果程序中只有%d说明符,scanf() 永远也不会越过那个A(去读下一个)。这就是造成无限循环的原因~追问开始为什么一开始输入A之类的字母就不会循环呢?而是直接结束了循环!必须要先输入数字回车,在输入字母才会出现无限的循环??追答?
一开始输A的话就会无限循环的呀追问
我用的gcc啊?真的不可以!
全部回答
- 1楼网友:撞了怀
- 2021-11-30 14:45
while(score < 60);
这是个判断语句,若是输入的score小于60,就会进行循环。追问我想知道为什么会出现无限循环的问题!并且只有先输入一个数字的情况下再输入字母就会出现!
这是个判断语句,若是输入的score小于60,就会进行循环。追问我想知道为什么会出现无限循环的问题!并且只有先输入一个数字的情况下再输入字母就会出现!
- 2楼网友:往事埋风中
- 2021-11-30 14:32
因为任意一个字母的ASC||码都是大于60的!最小的字母A的ASC||码是65,这样的话你的程序就不会结束!有什么疑问继续追问啊!追问额!因为65>60,所以while为假,结束循环了啊应该!!!!但是实际是在不断的循环!!!大神,请看清题目啊!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯