C语言scanf函数的停止??

来源:百度知道 编辑:UC知道 时间:2024/05/20 23:39:40
main()
{
int a,b,c;
scanf("%3d-%2d-%4d",&a,&b,&c);
printf("a=%d,b=%d,c=%d",a,b,c);
}

输入
12-345-6789
输出
a=12,b=34,c=62

请问为什么是这个结果,第3个为什么会随机输出62?
什么是 ”格式参数中的格式项用完(正常结束)”以及”发生格式项与输入域不匹配(非正常结束)”?

程序没有问题,是你的输入不符合规则,因为你限定了b的值为2位,则超过2位的输入后半部自动被截取,造成了C值错乱。

是的 我是新手 可是我没见过你这么些的
main()
{
int a,b,c;
scanf("%3d%2d%4d",&a,&b,&c);
printf("%4d",a-b-c);
}

改成这样就可以了scanf("%3d-%3d-%4d",&a,&b,&c);
但是你这样只在是:第一个变量输入3位以内的数值.
第二个变量输入3位以内的数值.
第三个变量输入4位以内的数值.
否则还会出现以上错误
最好改成:scanf("%d-%d-%d",&a,&b,&c); 这样的话就不受聘限制了.

scanf("%3d-%2d-%4d",&a,&b,&c); 这句有问题,你的B指定是两位了,你输入三位但由于指定是两位所以是只能显示两位

我的认为是
你的C输入的太大了
如果要输入大一点的 数
我建议你
用(double)