什么时候需要吸收回车?或者其他字符。
一般是在这个时候前面是什么无所谓,关键是你在下一个scanf前面按了回车键而你的这个scanf又是接收字符串的。那就废了。原因分析如下,
-
当你按下回车键的时候后面又是接收字符串的scanf或者是getchar他们由于要读取缓冲区里面的内容就会把这个回车都取到,而回车有恰恰是结束都取,所以就会直接结束!而如果你的后面的scanf不是读取字符比如你读取的是%d,那就不存在问题。还有就是如果你的下一次读取是字符串也是没关系的,因为在%s也是会过滤掉前面的空格 回车的。为什么不存在问题?那是因为整形输入会忽略之前的空格、回车,并且以之后的空格、回车作为输入整形结束的标志。
-
还有就是不要有误区:不要认为你printf输出空格会影响scanf这完全是俩回事,因为printf输出的东西是在输出文件流而你在输入缓冲区。
-
还有一种情况就是人家要求你输入整形数据%d,但是你偏偏要输入字符型数据,这时,这个字符型并不会被scanf读取走,下一次读取就会出现问题
这个时候缓冲区里面已经是上一次字符的ascii码了,可以读取了。就会出错。
声明:
博主是原悦乎教程网站长,博主写博客花费了大量精力,我的博客欢迎转载共享,但在 同时,希望保留我的署名权,不得用于商业用途。转载时请注明转载地址。未经特别说明,均采用“署名-非商业性使用-禁止演绎 2.5 中国大陆”授权。任何违反本协议的行为均属于非法行为。