| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2300 人关注过本帖
标题:scanf函数中关于“\n”的疑惑
只看楼主 加入收藏
zhangzhongxu
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-7-20
收藏
 问题点数:0 回复次数:28 
scanf函数中关于“\n”的疑惑
#include <stdio.h>
#include <math.h>
void main()
{int a,b,h,f;
scanf("%d,%d\n",&h.&f);
a=2*h-f/2;b=f/2-h;
printf("%d,%d\n",a,b);
}
按照scanf("%d,%d\n",&h,&f);输入“4,12”时,输出的答案错误;但当输出“4空格12”时,结果计算正确,去掉“\n”后,输入“4,12”答案也正确;请问“\n”在这起了什么作用?
搜索更多相关主题的帖子: scanf 函数 
2008-07-24 10:24
xiaomengxia2008
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2008-7-23
收藏
得分:0 
scanf("%d,%d",&h.&f);当输入数字的时候,必须是4,12
scanf("%d %d",&h.&f);当输入数字的时候,必须是4(空格)12
scanf里面的格式必须和外面的格式完全一致。这是必须的要求。

对于字符‘\n’是换行的意思,当‘\n’出现在scanf中时,意味着必须在输入后面输入‘\n’才可以。

scanf()的格式控制串可以使用其它非空白字符,但在输入时必须输入这些字符。
例:
scanf("%d,%d",&a,&b);
输入: 3,4 ↙(逗号与"%d,%d"中的逗号对应)
scanf("a=%d,b=%d",&a,&b);
输入: a=3,b=4 ↙("a=","b=",逗号与"%d,%d"中的"a=","b="及逗号对应)
2008-07-24 10:46
xiaomengxia2008
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2008-7-23
收藏
得分:0 
一般在函数scanf中,不用‘\n’字符
2008-07-24 10:48
yole
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2008-7-10
收藏
得分:0 
4空格12能计算,但是结果是错的,是按照a=4,b=1来计算的。

估计是C的缓冲区的引起的问题。
那个字符还在缓冲区,出不来。
2008-07-24 11:30
zhangzhongxu
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-7-20
收藏
得分:0 
谢谢一楼和三楼的解释,茅塞顿开,在scanf()中,“”内的内容应该全部输入,哪怕是转义字符
2008-07-24 12:28
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
xiaomengxia2008 的解释是错误的

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-07-24 13:25
dengwei729
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-6-17
收藏
得分:0 
我在tc环境中试过了
加上\n后,接收数据时,进入了死循环。
不行的
2008-07-24 17:29
蓝色神话
Rank: 2
等 级:论坛游民
威 望:1
帖 子:404
专家分:24
注 册:2006-5-11
收藏
得分:0 
问这没有什么意义,你按照它的正确格式来就行了。
2008-07-24 20:36
AriesZ
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-7-23
收藏
得分:0 
scanf()里格式控制所包含的内容,在键盘输入时必须分毫不差的输入,包括转义字符(貌似是这样。。)
2008-07-24 22:34
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 
我认为,scanf格式串中的“空白字符”('\t' , '\n' or ' ')会吸收掉输入时连续的若干个空白字符。这句话的意思你多试试便可以体会。

例:
程序代码:
#include <stdio.h>
char buf[1000];
int main()
{
    int a,b;
    scanf("%d%d ",&a,&b);
    gets(buf);
    puts(buf);    
}


输入
程序代码:
3 4

    here
2008-07-25 02:38
快速回复:scanf函数中关于“\n”的疑惑
数据加载中...
 
   



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

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