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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 诺微_ 中级黑马   /  2014-11-17 00:09  /  3079 人查看  /  26 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在printf函数中\n是换行的意思,但是在scanf函数中\n到底是什么意思?加上\n与不加\n有什么本质区别?望解答!

QQ20141116-2.png (227.15 KB, 下载次数: 112)

QQ20141116-2.png

评分

参与人数 1黑马币 +1 收起 理由
星河鹭起 + 1

查看全部评分

26 个回复

倒序浏览
同样是换行的作用,试想一下,你输入一次,换一次行,再输入一次又换一次行,于是,你的scanf函数就出不去了,所以这个函数不用\n
回复 使用道具 举报
scanf函数不能加\n 不然你输入后敲入的回车只能代表你的\n 不能代表输入完结
回复 使用道具 举报 1 0
楼上说的很正确
回复 使用道具 举报
邵起 发表于 2014-11-17 08:12
同样是换行的作用,试想一下,你输入一次,换一次行,再输入一次又换一次行,于是,你的scanf函数就出不去 ...

有点不明白呢,能再解释下嘛?没有出不来啊,上图是我运行的顺序几结果!
回复 使用道具 举报
你这运行的是一个程序?
一个22,一个33?44哪去了   感觉乱七八糟的
回复 使用道具 举报
sfm 中级黑马 2014-11-18 08:00:14
7#
scanf函数中如果添加\n,那么你输入的时候也要在后面加上\n,否则不会结束输入
回复 使用道具 举报 1 0
你看学习视频了吗,我记得里面好像有说,回车也相当于输入一个字符
回复 使用道具 举报
区别太明显了啊,假设scanf里面没有\n,操作顺序应该是运行->提示输入num1->输入22->回车->提示输入num2->33->回车->输出两个数值及它们的和(不需要你输44什么的这类没意义的东西)。
scanf里面有换行符就意味着它不但要接收你输入的数值(或许是字符等等),还需要接收你一个换行符(回车),所以当你输完数据之后按回车代表的并不是确认并执行下一步,而是让scanf去接收你的换行符,而且甚至会影响后续函数语句的执行,所以明杰老师视频中明确说过,不要在scanf里面放\n。
回复 使用道具 举报
彈指っ紅顏老 发表于 2014-11-18 11:52
区别太明显了啊,假设scanf里面没有\n,操作顺序应该是运行->提示输入num1->输入22->回车->提示输入num2->3 ...

恩恩       想明白啦     谢谢指教!
回复 使用道具 举报
caozhichao 发表于 2014-11-18 02:36
你这运行的是一个程序?
一个22,一个33?44哪去了   感觉乱七八糟的

是运行的一个程序啊     开始运行 提示我输入一个数值    我输入22    按回车键     又卡主了    我就有输入了一个33     然后提示输入第二个数值     我就数了一个44   按回车    结果出来      num1=22,num2=33
回复 使用道具 举报
itDave 中级黑马 2014-11-18 23:19:11
12#
scanf函数千万別加\n,虽然我知道你的意图,scanf是从缓冲区读取字符,如果你加了\n,那么就会陷入循环,scanf会不不停读取缓冲区吧。我是这么理解的
回复 使用道具 举报
itDave 发表于 2014-11-18 23:19
scanf函数千万別加\n,虽然我知道你的意图,scanf是从缓冲区读取字符,如果你加了\n,那么就会陷入循环,sc ...

你说呢缓冲区,对小白来说,有点高。必须的加油!
回复 使用道具 举报
itDave 中级黑马 2014-11-18 23:55:55
14#
诺微_ 发表于 2014-11-18 23:53
你说呢缓冲区,对小白来说,有点高。必须的加油!

大家都差不多,都是从小白一路过来的,都是大牛了,就不来黑马了。你说呢?嘿嘿
回复 使用道具 举报
itDave 中级黑马 2014-11-18 23:56:58
15#
诺微_ 发表于 2014-11-18 23:53
你说呢缓冲区,对小白来说,有点高。必须的加油!

大家都差不多,都是从小白一路过来的,都是大牛了,就不来黑马了。你说呢?嘿嘿
回复 使用道具 举报

scanf函数不能加\n 不然你输入后敲入的回车只能代表你的\n 不能代表输入完结,所以意思就是要2个回车代表输入完结
回复 使用道具 举报
itDave 发表于 2014-11-18 23:56
大家都差不多,都是从小白一路过来的,都是大牛了,就不来黑马了。你说呢?嘿嘿 ...

此言有理   你现在到哪里了?
回复 使用道具 举报
云无心ii 发表于 2014-11-19 14:41
scanf函数不能加\n 不然你输入后敲入的回车只能代表你的\n 不能代表输入完结,所以意思就是要2个回车代表 ...

恩恩   是的   但是只有一个scanf函数的话加了\n就进入循环了
回复 使用道具 举报
诺微_ 发表于 2014-11-19 21:25
恩恩   是的   但是只有一个scanf函数的话加了\n就进入循环了

我错了,还以为敲2回车就可以结束 刚刚自己去试了试 确实是会陷入循环 具体机制好像上面大神有说
回复 使用道具 举报
就是用户输入的方式不一样而已
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马