第一个detchar执行后,为什么第二个getchar还没输入任何东西就执行其他语句?

问题描述:

代码如下:该代码用于根据星期首字母确认星期几,当我输入第一个getchar执行  case :t  时需输入第二个getchar,但我还没输入,就直接执行我下方的case语句,请问这是为什么?

getchar();//吸收掉一个字符后面的回车
ch2 = getchar();

原来printf后面的回车也会有影响。。。多谢大佬!!

Ps:昨天的问题也是你帮忙解决的,太感动,CSDN账号刚注册,这里面我没金币,没法重谢。。都不好意思了哈哈

不用客气,能帮到你就好。还有纠正一点,这个回车并不是printf里面的回车,是第一个getchar()输入的回车,你可以试下把printf里面的回车去掉试试。

我刚刚是把printf里面的回车给去掉就好了;

另外我第一个getchar回车后不应该立马就被第一个getchar给吸收掉吗?还是说仍然在缓冲区内

getchar()只吸收一个字符,回车没有被第一个getchar给吸收掉,还在缓冲区

至于你把printf里面的回车给去掉就好了,这个我倒是没遇到过,我之前也测试过printf,加不加\n,不影响结果

哦,好,那我在多试几遍,谢谢哈~