[英]strange output number ( C )
#include<stdio.h>
int main(void)
{
int h;
int m;
scanf_s("%d : %d", &h,&m);
printf("%d : %d", h,m);
return 0;
}
就是这样,我输入了 12 13 它给了我 12:-858993460
具有讽刺意味..你能给我一个主意吗?
如果您在问题中准确输入了“12 13”,那么问题是您的输入与您调用scanf
时指定的格式不匹配。 特别是, scanf
只寻找<some integer>: <some integer>
形式的输入。 请注意,您的输入不包括:
字符。 因此, scanf
仅成功地将一个数字读入您的第一个变量 ( h
),但未能读入第二个变量 ( m
)。
您可以通过检查scanf
的返回值来确认这种情况,它返回“成功匹配的输入项的数量”(参见手册页)。
您在 output 中看到“随机”数字的原因是您的变量m
从未初始化。 如果您改为将其初始化为0
,那么您将不再看到“随机”值。 无论如何,这是一个很好的做法。
例如(带错误检查):
#include<stdio.h>
int main(void)
{
int h = 0;
int m = 0;
int rc = scanf_s("%d : %d", &h,&m);
if (rc != 2) { // expect to read 2 values
printf("scanf failed, read %d value(s)\n", rc);
} else {
printf("%d : %d", h,m);
}
return 0;
}
将格式保留在scanf_s("%d: %d", &h,&m);
scanf()
: C 库 function int scanf(const char *format, ...)
从标准输入读取格式化输入。
在你的情况下,输入 12: 13
您对scanf_s
function 的调用要求输入中有一个冒号,但您没有键入一个,因此在调用中没有任何内容存储在m
中。 结果,您得到了m
的垃圾值(因为您也没有初始化它)。 如果您输入12: 13
,那么您应该得到预期的结果。
此外,请务必检查scanf_s
的返回值,以确保您获得了所有您想要的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.