| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4885 人关注过本帖
标题:scanf("%d\n",&a);里的\n 有什么作用
只看楼主 加入收藏
qb3276
Rank: 2
等 级:论坛游民
帖 子:24
专家分:42
注 册:2010-10-25
收藏
得分:3 
如果输入1按回车后在输出1,如果输入1 2按回车也还是输出1,输入的格式是要相匹配的,如果是scanf("a=%d,b=%d", &a, &b)  那么输入时为以下形式:a=1,b=2
2010-10-31 18:51
浩凡儿
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:101
专家分:394
注 册:2010-10-30
收藏
得分:0 
scanf("a=%d,b=%d\n",&a,&b);
中的\n没有任何意思在scanf("")""中的东东要全部按原样输如上的要像这样输的a=2,b=3\n才可以正确运行的
2010-10-31 23:15
t505556855
Rank: 2
等 级:论坛游民
帖 子:27
专家分:32
注 册:2010-10-31
收藏
得分:3 
建议不要把scanf里面加入\n会影响输出结果,且scan中的\n只能无限换行
2010-11-01 07:15
gesiyuan2008
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-7-10
收藏
得分:0 
我昨天才开始看C语言,我都知道\n是换行符。居然真有比我菜而且比我懒的人
2010-11-01 08:25
五当家
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:2
帖 子:1112
专家分:3674
注 册:2010-10-20
收藏
得分:0 
加\n如果同时输入一个以上的要输入一个换一行。

经验积累中............
2010-11-01 12:43
cx12588
Rank: 2
来 自:河南
等 级:论坛游民
帖 子:49
专家分:74
注 册:2010-10-15
收藏
得分:0 
scanf中出现\n只会减弱程序的可读性
2010-11-01 13:30
cacker
该用户已被删除
收藏
得分:3 
提示: 作者被禁止或删除 内容自动屏蔽
2010-11-01 13:43
xq328220454
Rank: 2
来 自:天津
等 级:论坛游民
帖 子:23
专家分:42
注 册:2008-8-22
收藏
得分:3 
\n是换行符,就是在输出这一句话以后再这句话的结尾自动打一个回车,然后在输出其他内容,在scanf中最好不要写\n。。。
2010-11-01 14:22
雾柏
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-10-16
收藏
得分:0 
回复 楼主 sainimu78
应该一样吧
2010-11-01 14:25
七有新人
Rank: 3Rank: 3
来 自:哈尔滨
等 级:论坛游侠
帖 子:64
专家分:132
注 册:2010-10-12
收藏
得分:3 
这个问题个人觉得主要是涉及了两个问题:
第一个是scanf的格式问题:
                 scanf("%d:%d",&a,&b),我想大家应该比较熟悉了,输入时的格式应该是   1:2
                 这样的才是有效的。所以这说明了楼主所疑问的“/n”的作用就应该比较清楚了
                 是多个输入的分隔,用来区分多个“输入”。
                 因为是加在最后面的,所以有跟没有的效果是一样的,而且c语言默认的就是回车
                 分隔多个输入。
第二个是输入缓冲区的问题:
                 楼主大概是这样想的“有两个scanf,所以我输入了两排(1,2,3和4,5,6),
                 那么这两排应该对应着两个scanf函数”,其实不对,你可以这样输入(1 回车2回车3回车。。。)
                 这也是由scanf由回车来区分多个输入所决定的。所以“两排”跟“两个scanf”没有
                 对应关系。不过是怎么输入的,输入了多少个,都是输入到缓冲区当中去。然后
                 再顺序的给abxyz赋值,故效果为12345
                 如果想取得楼主所想的效果应该是
                    scanf("%d%d",&a,&b);
                    fflush(stdin);//刷新缓冲区
                    scanf(":%d%d%d",&x,&y,&z);  

         Ps:    这样应该可以的,但是我在gcc下(window下还没有试)(已验证),却没有实现,不明白是为什么
                 搭车求达人回答

[ 本帖最后由 七有新人 于 2010-11-1 21:08 编辑 ]

图!
不一定是真相!
2010-11-01 15:49
快速回复:scanf("%d\n",&a);里的\n 有什么作用
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025466 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved