c中scanf函数读取换行符的问题
2017-08-31 17:27
162 查看
c中利用scanf()函数输入字符串,在按下回车后'\n'字符是被存储在了缓存区的,如果下一次继续读入字符这个换行符可能会产生影响,也可能不会产生影响。总结如下:
不会产生影响的情况:第二次输入为“字符串”(或数字);
如果输入为:
则输出也为:
scanf()函数更基于获取单词(get world)而不是获取字符串(get string);scanf()是以第一个非空白字符开始读入的,故第一次读入字符所输入的'\n',在第二个scanf()函数开始时被忽略掉了。(“%d”同理)
会产生影响的情况:第二次读入的是‘字符’:
如果输入h,在按下回车后会直接输出:
则直接就会输出为h和两个空行:
因为读入的是字符,所以在第一个字符读完后的'\n', 在运行第二个scanf()时直接被读取了,所以第二个printf()函数输出为两个'\n';
如果想消除'\n'的影响可以在中间加个getchar()函数;
不会产生影响的情况:第二次输入为“字符串”(或数字);
scanf("%s",a); scanf("%s",b); printf("%s\n",a); printf("%s\n",b);
如果输入为:
hello world
则输出也为:
hello world
scanf()函数更基于获取单词(get world)而不是获取字符串(get string);scanf()是以第一个非空白字符开始读入的,故第一次读入字符所输入的'\n',在第二个scanf()函数开始时被忽略掉了。(“%d”同理)
会产生影响的情况:第二次读入的是‘字符’:
scanf("%c",&a); scanf("%c",&b); printf("%c\n",a); printf("%c\n",b);
如果输入h,在按下回车后会直接输出:
h
则直接就会输出为h和两个空行:
h
因为读入的是字符,所以在第一个字符读完后的'\n', 在运行第二个scanf()时直接被读取了,所以第二个printf()函数输出为两个'\n';
如果想消除'\n'的影响可以在中间加个getchar()函数;
相关文章推荐
- C++读取到回车换行符问题处理
- PHP-代码-读取文本换行符的小问题解决方法
- Oracle除去数据中的换行符以免读取出现问题
- 01 [c语言][重要的知识点]printf函数和scanf函数的数据输出与读取问题
- Unity3d读取CSV中的文本到Rich Text中换行符不识别的问题
- 读取Html文本字符串时可能遇到输出时打印字体格式或者换行符之类问题的情况
- Java 输入流读取文本文件换行符问题
- [黑马程序员]01 [c语言][重要的知识点]printf函数和scanf函数的数据输出与读取问题
- poi读取word的换行符问题
- 解决读取换行符问题
- Oracle除去数据中的换行符以免读取出现问题
- 通过Shell脚本读取properties文件中的参数时遇到\r换行符的问题
- Java 输入流读取文本文件换行符问题
- Unity3d读取Josn,xml等非手动拼写,换行符不识别的问题
- Java 输入流读取文本文件换行符问题
- Ado.Net读取Excel常见问题总结
- 关于fgets从键盘读取,直接跳过键盘输入的问题
- 解决IntelliJ IDEA无法读取配置文件的问题
- cocos2dx 读取tilemap objectgroup 属性为空问题
- flask web 开发 MarkDown 存储,读取问题