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

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

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

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

QQ20141116-2.png

评分

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

查看全部评分

26 个回复

正序浏览
hityu 中级黑马 2014-11-20 23:46:01
27#
scanf里“”里部分规定的是输入格式,也就是说如果在scanf里有\n,那么你必须输入换行才能代表输入结束,希望能够帮助到你
回复 使用道具 举报
joykerl 发表于 2014-11-20 21:18
我平时写输入函数都不加\n的,你不加就好了

恩恩   知道了! 就是有点搞不清楚具体原因
回复 使用道具 举报
liangkun097 发表于 2014-11-20 21:41
视频里有讲到啊,scanf是不可以加\n的,不然的话会进入死循环的

是的   有讲!   但是如果回车进入循环后再随便输入一个值   就跳出循环了   继续执行了  但是结果会大相径庭
回复 使用道具 举报
视频里有讲到啊,scanf是不可以加\n的,不然的话会进入死循环的
回复 使用道具 举报
诺微_ 发表于 2014-11-20 21:09
用户输入方式???

我平时写输入函数都不加\n的,你不加就好了
回复 使用道具 举报
joykerl 发表于 2014-11-20 19:21
就是用户输入的方式不一样而已

用户输入方式???
回复 使用道具 举报
云无心ii 发表于 2014-11-20 18:26
我错了,还以为敲2回车就可以结束 刚刚自己去试了试 确实是会陷入循环 具体机制好像上面大神有说 ...

是的   只有一句就会陷入循环   如果是两句就成我上面图片的那样啦
回复 使用道具 举报
就是用户输入的方式不一样而已
回复 使用道具 举报
诺微_ 发表于 2014-11-19 21:25
恩恩   是的   但是只有一个scanf函数的话加了\n就进入循环了

我错了,还以为敲2回车就可以结束 刚刚自己去试了试 确实是会陷入循环 具体机制好像上面大神有说
回复 使用道具 举报
云无心ii 发表于 2014-11-19 14:41
scanf函数不能加\n 不然你输入后敲入的回车只能代表你的\n 不能代表输入完结,所以意思就是要2个回车代表 ...

恩恩   是的   但是只有一个scanf函数的话加了\n就进入循环了
回复 使用道具 举报
itDave 发表于 2014-11-18 23:56
大家都差不多,都是从小白一路过来的,都是大牛了,就不来黑马了。你说呢?嘿嘿 ...

此言有理   你现在到哪里了?
回复 使用道具 举报

scanf函数不能加\n 不然你输入后敲入的回车只能代表你的\n 不能代表输入完结,所以意思就是要2个回车代表输入完结
回复 使用道具 举报
itDave 中级黑马 2014-11-18 23:56:58
15#
诺微_ 发表于 2014-11-18 23:53
你说呢缓冲区,对小白来说,有点高。必须的加油!

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

大家都差不多,都是从小白一路过来的,都是大牛了,就不来黑马了。你说呢?嘿嘿
回复 使用道具 举报
itDave 发表于 2014-11-18 23:19
scanf函数千万別加\n,虽然我知道你的意图,scanf是从缓冲区读取字符,如果你加了\n,那么就会陷入循环,sc ...

你说呢缓冲区,对小白来说,有点高。必须的加油!
回复 使用道具 举报
itDave 中级黑马 2014-11-18 23:19:11
12#
scanf函数千万別加\n,虽然我知道你的意图,scanf是从缓冲区读取字符,如果你加了\n,那么就会陷入循环,scanf会不不停读取缓冲区吧。我是这么理解的
回复 使用道具 举报
caozhichao 发表于 2014-11-18 02:36
你这运行的是一个程序?
一个22,一个33?44哪去了   感觉乱七八糟的

是运行的一个程序啊     开始运行 提示我输入一个数值    我输入22    按回车键     又卡主了    我就有输入了一个33     然后提示输入第二个数值     我就数了一个44   按回车    结果出来      num1=22,num2=33
回复 使用道具 举报
彈指っ紅顏老 发表于 2014-11-18 11:52
区别太明显了啊,假设scanf里面没有\n,操作顺序应该是运行->提示输入num1->输入22->回车->提示输入num2->3 ...

恩恩       想明白啦     谢谢指教!
回复 使用道具 举报
区别太明显了啊,假设scanf里面没有\n,操作顺序应该是运行->提示输入num1->输入22->回车->提示输入num2->33->回车->输出两个数值及它们的和(不需要你输44什么的这类没意义的东西)。
scanf里面有换行符就意味着它不但要接收你输入的数值(或许是字符等等),还需要接收你一个换行符(回车),所以当你输完数据之后按回车代表的并不是确认并执行下一步,而是让scanf去接收你的换行符,而且甚至会影响后续函数语句的执行,所以明杰老师视频中明确说过,不要在scanf里面放\n。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马