这是我遇到的情况,圈起来的地方读入时,会把前面箭头处读n时的回车读入,导致读取不正确,一般情况下,这种问题会出现在%d与%c搭配的情况下。
原因:
使用scanf从输入流缓冲区中读取数据,系统会把从键盘输入的字符先放入缓冲队列,直到键入回车键或者遇到文件结束符EOF时,再从输入缓冲区逐个读取字符; 解决:
1,用%*c读入多余的回车符
2,在%c前面加上一个空格
std::cin>>std::ws>>ch
std::cin>>std::ws>>ch
,其中 ch 是你要读入的字符