scanf问题,还望高手指点迷津
void main()
{
int a,b;
scanf("%d\n%d\n",&a,&b);
printf("%d%d",a,b);
}
运行至scanf时,需要输入3个数字才能使程序顺利通过,why?
我知道2个\n不应该加,我想知道的是如果加上了,上面的问题如何解释?
问题点数:20、回复次数:19Top
1 楼zhousqy(标准C匪徒)(甩拉,甩拉)回复于 2005-04-04 09:02:23 得分 0
不解。Top
2 楼CMyMfc(星际人生:=E.F=FlyForEver)回复于 2005-04-04 09:07:39 得分 2
加了\n, 它会等你敲入回车再输入下一个数值, 也就是用回车作分割副Top
3 楼zhangqiushui(水)回复于 2005-04-04 09:08:50 得分 2
是因为后面多了个\n的原故Top
4 楼skywgs(浪迹天涯)回复于 2005-04-04 09:27:54 得分 0
upTop
5 楼AtaLoss0202(星空天宇)回复于 2005-04-04 09:40:43 得分 2
去除最后一个\n.Top
6 楼mensa(Talor)回复于 2005-04-04 10:25:37 得分 2
去掉最后一个回车的确可行。
个人认为:scanf()判断输入结束的标准就是最后输入的是回车,并且最后的这个回车之前必须是字符,也就是说如果你不输入任何字符而不断的回车的话,scanf()会一直等下去,直到遇到紧接着字符后面输入的那个回车才结束。
因为你的scanf()最后要求输入一个回车,而这个回车之后再输入的回车是不会被scanf()看作输入结束的标志的,原因如上,所以必须输入一个字符后再回车才能结束输入。Top
7 楼janms()回复于 2005-04-04 10:46:45 得分 0
受益,顶!Top
8 楼yukuang(编程是我的业余爱好)回复于 2005-04-04 13:27:04 得分 0
还是不解,晕死。。。。Top
9 楼summerICEREDTEA(从基础学起)回复于 2005-04-04 13:34:32 得分 2
scanf 不认得\nTop
10 楼QQ503503()回复于 2005-04-04 14:35:33 得分 2
问题就出在最后一个\n上。但是mensa(Talor)说的也有点问题,我试过输完第二个字符后,按Tab键再输字符,输入回车,程序可以执行。Top
11 楼scriptren(路是慢慢走出来的......)回复于 2005-04-04 17:07:28 得分 0
scanf加上\n有什么作用呢?Top
12 楼xjp6688(大平/要做必须最好)回复于 2005-04-04 17:58:37 得分 0
真头一次见过scanf加\nTop
13 楼style1984()回复于 2005-04-04 19:30:17 得分 2
你知道空白符是那几个嘛
空格,回车,tab
都将作为输入数据确认的符号Top
14 楼yc0188(守护瓶(萍))回复于 2005-04-04 20:14:01 得分 2
scanf("%d\n%d\n",&a,&b);
可能过滤掉一个数字,然后一直等待这个数字输入.....Top
15 楼hanxingwuqing(无效参数)回复于 2005-04-04 20:58:51 得分 2
我觉得这是个习惯问题,用scanf读字符串的时候,我觉得用","最好啦
可以改成scanf("%d,%d/n",&a,&b);这样就用“,”来判断两个字符串的分界了
用“/n”来分隔的话,很容易出问题的Top
16 楼beyondlwm(nobitalwm)回复于 2005-04-04 21:14:58 得分 2
我们老师专门说了不能在SCANF里加/n,至于什么原因也没细想Top
17 楼zhongjun33(中军)回复于 2005-04-04 21:23:50 得分 0
void main()
{
int a,b;
scanf("%d,%d,",&a,&b);
printf("%d,%d",a,b);
}
输入 3 回车
结果怎么是 3,3129呢Top
18 楼Springo0(Surprise)回复于 2005-04-05 11:17:18 得分 0
我scanf里是可以来\N的
实践总比你老师来的真吧!Top
19 楼sky911911(assda)回复于 2005-04-05 16:05:14 得分 0
最好在scanf 少用到\n哦 ...Top




