| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2300 人关注过本帖
标题:scanf函数中关于“\n”的疑惑
只看楼主 加入收藏
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
以前我曾经与一个高手争论过这个东西,最后,我同意那高手的说法,具体的帖子忘了在哪里了,我只记得,那位高手好像叫softwind,那时候还有个叫“我不是郭靖”的版主

当时争论的结果是:\n不做事情,输入的\n字符会留在缓冲区.详细的去找一下那个帖子就应该知道了。

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-07-25 08:47
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
我找到了,当时我与那高手争论的帖子(我现在很菜,当时比现在还菜,所以贴中的内容见笑了):
https://bbs.bccn.net/viewthread.php?tid=106414&highlight=scanf%2B%5Cn

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-07-25 08:52
supermen213
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2008-07-25 09:20
蓝色神话
Rank: 2
等 级:论坛游民
威 望:1
帖 子:404
专家分:24
注 册:2006-5-11
收藏
得分:0 
我不知道为什么喜欢在scanf中加个"\n",意义何在?谁举个实际中要用到的例子出来?钻研和钻牛角尖往往只有一线之隔!
2008-07-25 10:18
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
[bo][un]蓝色神话[/un] 在 2008-7-25 10:18 的发言:[/bo]

我不知道为什么喜欢在scanf中加个"\n",意义何在?谁举个实际中要用到的例子出来?钻研和钻牛角尖往往只有一线之隔!



是吗?钻牛角尖和钻研区别那么小吗?
你在实际中没用过或者没见过就说没有么?世界上有那么多行代码,谁敢说没有?——没有人

搞明白这个问题,不是钻牛角尖。说不定,搞明白后,就真的可以用在实际中。你不要否定,因为,这个东西你尝试过没有?没有!因为没有尝试过,你就没有否定这个说法的资本。

[[it] 本帖最后由 卧龙孔明 于 2008-7-25 10:24 编辑 [/it]]

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-07-25 10:23
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
LS:比如
for(;;)scanf("%d%d ",&a,&b),printf("%d,%d\n",a,b);
上面的代码,在输入1 2<CR>的时候并不会立即显示结果,而必须在输入第三个数字的时候才可以。
在控制台输入的时候,上面的技巧好像完全没有作用,但是别忘了,C的IO函数是同事支持文件操作的。
在文件操作的时候,scanf("%d%d ",...吸收掉了数字后面的空格和回车等空白字符,这样就可以混合使用scanf和gets了。这就是这种写法的用处。
在scanf里面,' ','\t','\n'的用处完全一样,上面的代码自然可以写成scanf("%d%d\n",...不过我一般直接写空格,感觉感觉写'\n'有点不舒服的感觉。

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-07-25 10:24
学不懂也要学C
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2008-7-3
收藏
得分:0 
为什么出现这样的情况呢?
那个高手能不能说明一下具体的原因?
2008-07-25 10:25
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
[bo][un]StarWing83[/un] 在 2008-7-25 10:24 的发言:[/bo]

LS:比如
for(;;)scanf("%d%d ",&a,&b),printf("%d,%d\n",a,b);
上面的代码,在输入1 2的时候并不会立即显示结果,而必须在输入第三个数字的时候才可以。
在控制台输入的时候,上面的技巧好像完全没有作用,但是别 ...


学长回来了...

请教一下:空格等可以吸收一个还是多个字符?

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-07-25 10:28
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
我试了一下,可以吸收多个字符
感谢starwing和leeco

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-07-25 10:36
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
更好的例子:
程序代码:
#include<stdio.h>
int main(void)
{
    int a,b;
    char t;
    while(scanf("%d%d ",&a,&b)!=EOF)
    {
        while((t=getchar())!='\n')
        {
            printf("%c ",t);
        }
        printf("%d\n",a+b);
    }    
    return 0;
}    

你可以输入
1 1                  1
那么只会输出1 2
这表示,第二个和第三个1之间的所有' '都被吸收了。

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-07-25 10:44
快速回复:scanf函数中关于“\n”的疑惑
数据加载中...
 
   



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

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