CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

scanf问题,还望高手指点迷津

楼主yukuang(编程是我的业余爱好)2005-04-04 08:56:49 在 C/C++ / C语言 提问

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

相关问题

  • 望指点迷津
  • 为什么会是这样!还望高手指点迷津
  • 希望高手指点迷津!!!!!!!!!!!!!!!!!!!!!!
  • session问题,望指点迷津
  • 一个递归的小程序,望大侠指点迷津
  • 看不懂的脚本, 望高手指点迷津...
  • 关于下拉列表的问题!望能够指点迷津!!
  • c的困惑,望高手指点迷津,高分相送!
  • 这句sql什么地方错了?????望指点迷津!!!!!
  • 表的设计问题,望高手指点迷津

关键词

  • 字符
  • 数字
  • 回车
  • 输入
  • scanf
  • 问题
  • 结束
  • 知道

得分解答快速导航

  • 帖主:yukuang
  • CMyMfc
  • zhangqiushui
  • AtaLoss0202
  • mensa
  • summerICEREDTEA
  • QQ503503
  • style1984
  • yc0188
  • hanxingwuqing
  • beyondlwm

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo