关于scanf的格式问题

sunkai572 2009-03-25 09:44:25
#include "stdio.h"
main()
{ int a,b; printf("请输入a,b:") ; scanf("%d%d",&a,&b);
if(a>b)
printf("a>b\n");
else
if(a<b)
printf("a<b\n");
else
printf("a=b\n");
}


如果输入:“3 4”出现a<b
但是如果输入:“3,4”则会出现a>b
请问这个是为什么?
...全文
102 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
mikescofied 2009-03-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xiaoQ008 的回复:]
引用 4 楼 mikescofied 的回复:
scanf("%d%d",&a,&b); 这种情况只能输入“3 4”,中间必须打空格。
scanf("%d,%d",&a,&b);这种情况只能输入“3,4”,中间必须打逗号。
这是scanf的规则。


scanf("%d%d",&a,&b);
当你输入:“3,4”
a=3 ,
b这时就是逗号,而不是4,所以会出现a>b



b不是‘,’吧
我的編譯器里
如果輸入3,4
還是 a <b哦

[/Quote]
对,当输入3,2时,系统遇到逗号时,会认为输入结束,而这时b等于一个随机数,默认为-858993460,即b=-858993460,当然 a > b

breezes2008 2009-03-25
  • 打赏
  • 举报
回复
scanf是格式化函数,如果是scanf("%d%d",&a,&b);则可以输入:3空格4回车,或者:3回车4回车;而如果输入3,4,此时','号会被scanf解析.
================================================================
如果想要输入3,4这种格式的话,需这样写:scanf("%d,%d",&a,&b);
xiaoQ008 2009-03-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 mikescofied 的回复:]
scanf("%d%d",&a,&b); 这种情况只能输入“3 4”,中间必须打空格。
scanf("%d,%d",&a,&b);这种情况只能输入“3,4”,中间必须打逗号。
这是scanf的规则。


scanf("%d%d",&a,&b);
当你输入:“3,4”
a=3 ,
b这时就是逗号,而不是4,所以会出现a>b


[/Quote]
b不是‘,’吧
我的編譯器里
如果輸入3,4
還是 a<b哦
xiaoQ008 2009-03-25
  • 打赏
  • 举报
回复
scanf("%d%d",&a,&b);
以空格分開輸入 如3 4
則a=3 b=4
因為scanf遇到空格就會完成對第1個成員的賦值,
如果輸入3,4則b的值為隨機
其實你可以這樣
用scanf函數的返回值檢測
scanf()函数执行成功时的返回值是成功读取的变量数,也就是说,你这个scanf()函数有几个变量,如果scanf()函数全部正常读取,它就返回几。但这里还要注意另一个问题,如果输入了非法数据,键盘缓冲区就可能还个有残余信息问题,就用fflush(stdin);吧,以免影響下次輸入!
if(scanf("%d%d",&a,&b)!=2)
{
printf("error");
return 0;
}
mikescofied 2009-03-25
  • 打赏
  • 举报
回复
scanf("%d%d",&a,&b); 这种情况只能输入“3 4”,中间必须打空格。
scanf("%d,%d",&a,&b);这种情况只能输入“3,4”,中间必须打逗号。
这是scanf的规则。


scanf("%d%d",&a,&b);
当你输入:“3,4”
a=3 ,
b这时就是逗号,而不是4,所以会出现a>b

nishuangfeng 2009-03-25
  • 打赏
  • 举报
回复
scanf函数的输入要严格按照其引号内的格式输入,否则要出错的
scanf("%d%d",&a,&b); 输入:a b(中间大于等于1个空格或回车)
scanf("%d,%d",&a,&b); 输入:a,b(中间有,)
ydntlk 2009-03-25
  • 打赏
  • 举报
回复
在你的那种情况下,逗号被作为输入的数字处理了。
ydntlk 2009-03-25
  • 打赏
  • 举报
回复

scanf("%d%d", &a, &b); // 输入时,3和4中间有一个或多个空白符
scanf("%d,%d", &a, &b); // 输入时,3和4中间有一个逗号。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧