C语言的scanf输入bug???

2019-10-28 15:57发布

今天想写一个简单的ascii码转换程序,确在输入这一块出现了问题。


在上面的图片中,在功能选择那我敲了个2然后回车就直接跳过了代码里switch里面case 2的输入,打印出了回车的ascii码,有大神解答一下吗!?

标签:
2条回答
你好瞎i
2楼-- · 2019-10-28 16:38

估计是Enter=0xd,0xa ,scanf %d 时 检查到 '2', 0xd,就开始进入switch,再次 scanf %c 时,就收到0xa了
按楼上的方法,scanf前先清空

查看更多
倾城 Initia
3楼-- · 2019-10-28 16:44

输入流是行缓冲的,可以试下在读取字符之前用fflush(stdin)清空输入缓冲

查看更多
登录 后发表回答