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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

使用scanf(“%d”,&a)接收的时候,后面的‘\n’被收进哪里去了呢?如果后面再来一句scanf("%c",&b);b会不会变成‘\n’谢谢大神们!

33 个回复

倒序浏览
不会,因为scanf()的'\n'是被当作输入结束的标志。

点评

好好的学习吧 同学 你是最棒的 加油  发表于 2015-6-3 06:27
回复 使用道具 举报 1 0
13673696542 发表于 2015-5-25 15:58
不会,因为scanf()的'\n'是被当作输入结束的标志。

哦哦,谢啦

点评

谁这样的,一起学习 一起交流  发表于 2015-6-3 06:29
回复 使用道具 举报 1 0
那是换行符吧- - 跟其他的没关系。。
回复 使用道具 举报
我看了下面的评论,感觉了解了些
回复 使用道具 举报
小细节笔记做起来
回复 使用道具 举报 1 0
13673696542 发表于 2015-5-25 15:58
不会,因为scanf()的'\n'是被当作输入结束的标志。

\n会留在缓冲区,并且会被后面的scanf("%c",&b)吸收
回复 使用道具 举报 1 0
肯定会啊  scanf里不允许\n的
回复 使用道具 举报 1 0
到底哪个说的是正确的呢?
回复 使用道具 举报 1 0
说句实话,没太明白你表达的意思,具体应该看'\n'的位置吧,scanf("%d\n",&a)形式是不允许出现的
回复 使用道具 举报 1 0
yi95392 发表于 2015-5-25 21:34
\n会留在缓冲区,并且会被后面的scanf("%c",&b)吸收

测试了才知道结果,你写两个scanf测试一下。
回复 使用道具 举报 1 0
\0是字符串结束的标志吧,scanf中不用\n。

点评

是这样的 努力 一起交流一起进步  发表于 2015-6-3 06:30
回复 使用道具 举报 1 0
没明白什么意思
回复 使用道具 举报 1 0
学习了,我也有同样疑问
回复 使用道具 举报
scanf("%d\n",&a)
双引号内除了%d外,其它的必须原样输入;
例如输入456的时候,必须是  456\n  回车
回复 使用道具 举报
13673696542 发表于 2015-5-26 20:23
测试了才知道结果,你写两个scanf测试一下。

早就测过了,\n就是会被吸收,你怎么不试试再回帖.

Snip20150526_1.png (96.95 KB, 下载次数: 176)

Snip20150526_1.png
回复 使用道具 举报
fixer 中级黑马 2015-5-27 06:30:46
17#
围观大神的解答
回复 使用道具 举报
\n是输入结束的标志,你这样输入的话编译的时候编译器会以为你结束输入了,但是实际你什么都没有输入,会报错
回复 使用道具 举报
学习学习!
回复 使用道具 举报
yi95392 发表于 2015-5-26 22:57
早就测过了,\n就是会被吸收,你怎么不试试再回帖.

今天测试了一下,的确是被第二个scanf接收了。不过我看了上课的笔记,老师当时说scanf会将空格、回车、制表符当作终止数据输入。莫非老师当时讲错啦!
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马