为什么第一个程序中输入b,会输出两行11111,而第二个程序中输入2,只输出一行11111?我用Wintc1.9.1

[复制链接]
查看11 | 回复1 | 2011-11-19 15:36:10 | 显示全部楼层 |阅读模式
缓冲区的问题:第一个程序:你输入b以后,接着输入的回车符也存在缓冲区,因此循环内的输入会读取这个回车符而输出第二排11111。 解决: 在循环内scanf之前加入: fflush(stdin),清空缓冲区。第二个为什么不会呢?因为它是读取数字,你输入以后,缓冲区同样包括回车符,但是接下来scanf要将缓冲区的字符转换成数字,因此缓冲区被清空了,所以没有那个问题。另外,你试着在第二个程序里面输入一个字符,不能转换为数字的,看看效果:D...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行