djshichaoren 2016-04-14 10:44 采纳率: 0%
浏览 1969

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

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

  • 写回答

2条回答 默认 最新

  • 小灸舞 2016-04-14 11:40
    关注

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

    评论

报告相同问题?