A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李旭飞 中级黑马   /  2015-6-26 21:51  /  1148 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

视频中为什么要在while循环里加一个scanf吸收字符
我知道不吸收的话地图会打印两次,为什么?
有人说是回车的原因,为什么敲好多回车只算一个

7 个回复

倒序浏览
用scanf函数会吸收掉多余的字符,这样程序就不会一个指令执行两次,比如: w是向上走 如果你一次性打了两个w 缓存中就会有两个ww字符, 当程序执行时,识别到第一个w, 满足执行条件 会打印地图 向上走 , 但是就算你不在输入任何字符, 缓存中还有一个w 他会继续识别,然后打印地图,向上走(如果上一步为空格的话),这就是要用scanf函数吸收掉多余字符的原因
回复 使用道具 举报
:)我也正纳闷呢
回复 使用道具 举报
同求原因啊
回复 使用道具 举报
二楼正解~~~~~~~~~~~~~~~~~~~~~~
回复 使用道具 举报
其实我不太明白为何输入一个回车程序会再执行一次.
回复 使用道具 举报
大家一起努力吧。大家一起加油
回复 使用道具 举报
我觉得多用一个scanf吸收字符完全是浪费,就该直接在%c前面敲一个空格,这样敲回车的时候就不会出现类似的情况了,在%c前面敲空格就等于已经吸收回车了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马