黑马程序员技术交流社区

标题: 循环问题,求解惑 [打印本页]

作者: chenzuliang1993    时间: 2015-4-11 22:55
标题: 循环问题,求解惑
如图,这个应该循环一次让用户判断一次啊,可是为什么运行的时候输入Y的时候会连续循环两遍才再次让用户判断啊

QQ20150411-2.png (141.45 KB, 下载次数: 18)

QQ20150411-2.png

作者: wslinke    时间: 2015-4-11 23:13
因为你在scanf的时候只读取了一个字符 ,后面的字符还留着缓冲区里
比如你输入了y 敲了回车,这时候程序读取了y,但是把回车还留着缓冲区里,等到你的下一个循环时,scanf直接将回车读取了,所以又打印了一次
解决办法就是每次scanf以后清除一次缓冲区
在scanf后面加上一行
while(getchar()!='\n')continue;
就行了
作者: chenzuliang1993    时间: 2015-4-11 23:31
wslinke 发表于 2015-4-11 23:13
因为你在scanf的时候只读取了一个字符 ,后面的字符还留着缓冲区里
比如你输入了y 敲了回车,这时候程序读取 ...

分析的很好,我想的也是缓存区里有残留
作者: sky123    时间: 2015-12-6 22:25
缓存区中有残留
作者: junjunzhang    时间: 2015-12-7 00:05
二楼高见,只需把那个多余字符吸收即可
作者: yll    时间: 2015-12-7 14:23
学习下~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2