2 djshichaoren djshichaoren 于 2016.04.14 18:44 提问

gdb cin无限循环输入、无法break

1调用cin和scanf都会无限的输入按啥也退不出去,用fstream重定向输入可以正确执行。
2.break总是没有用,没法暂停

2个回答

qq423399099
qq423399099   Ds   Rxr 2016.04.14 19:40

当你在控制台输完数据敲回车后,输入的数据以及回车换行符被同时送到输入缓冲区,例如你输入的数据为a,然后回车,此时输入缓冲区中就有两个字符,一个是‘a’,一个是回车换行符‘/n’,接着程序读取,由于类型不匹配,读取失败,并没有读走输入缓冲区中的数据,也就是说,此时输入缓冲区中还是‘a’,和‘\n’,接着while循环继续读输入缓冲区,依然类型不匹配,于是就成了死循环
方法:在调用cin前可以先调用cin.clear()和cin.sync()

djshichaoren
djshichaoren 谢谢,但是用g++运行就可以,gdb就不行,在下附图两张,我怀疑是我的gdb坏了
一年多之前 回复
djshichaoren
djshichaoren   2016.04.16 12:20

图片说明
图片说明
会无限输入,按ctrl+d和ctrl+c也没用

Csdn user default icon
上传中...
上传图片
插入图片