主题:[讨论]一个新手的新手问题求解~~~~~
wqa19891115
[专家分:0] 发布于 2012-06-11 16:10:00
while(scanf("%d %d",&a,&b)!=EOF)中"%d %d"换成"%d,%d"无法得出结果,求大大们解释,小弟新手,啥都不懂,你们要笑就笑吧~~~~~~[em8]
回复列表 (共1个回复)
沙发
eastcowboy [专家分:25370] 发布于 2012-06-15 21:14:00
在scanf中:
1、如果你的引号""里面有一个空格,那程序就会尝试读取空格(回车、tab键之类的,也算空格)。只要一直有空格,那就一直读取,直到没有空格为止。
2、如果你的引号""里面有一个逗号,那程序就会尝试读取一个逗号。如果没有逗号,那就停止,不再读取。
看看微软对这个函数的解释:
[url=http://msdn.microsoft.com/zh-cn/library/kwwtf9ch.aspx]http://msdn.microsoft.com/zh-cn/library/kwwtf9ch.aspx[/url]
只要看前面部分,大致意思是:
1、如果有空格,那就尝试读取零个或者多个空格
2、如果有其它字符,那就尝试原样读取。如果没有读取到,那就停止。
3、如果有%开头的一串内容,则分析这串类容,并且按照规则进行读取。
总的来说,
1、scanf("%d %d", &a, &b),这个,先读取一个整数并且设置到变量a,然后忽略掉接下来的空格,最后读取一个整数并且设置到变量b。
2、scanf("%d,%d", &a, &b),这个,先读取一个整数并且设置到变量a,然后看看接下来是否有逗号,如果没有,则结束(此时变量b还没有读取!!),最后读取一个整数并且设置到变量b。
现在,看看你输入的是什么内容,然后就能明白了吧。
我来回复