vs2022,运行结果总是有-858993460出现
代码如下,这咋回事啊,求解答
#include
int main()
{
int a, b, c, d;
int t;
printf("please input four numbers:\n");
scanf_s("%d,%d,%d,%d", &a, &b, &c, &d);
if (a > b) {
t = a; a = b; b = t;
}
if (a > c) {
t = a; a = c; c = t;
}
if (a > d) {
t = a; a = d; d = t;
}
if (b > c) {
t = b; b = c; c = t;
}
if (b > d) {
t = b; b = d; d = t;
}
if (c > d) {
t = c; c = d; d = t;
}
printf("%d,%d,%d,%d\n", a, b, c, d);
return 0;
}
试下在输入四个数字时,输入法切换成英文输入法,因为scanf_s里面的说明符是英文状态下的逗号, 输入的格式和scanf_s里面的说明符不匹配会导致从输入获取数据异常,我在Dev-C++用下面的代码测试的,把scanf_s改为了scanf().
#include <stdio.h>
int main()
{
int a, b, c, d;
int t;
printf("please input four numbers:\n");
scanf("%d,%d,%d,%d", &a, &b, &c, &d);
if (a > b) {
t = a; a = b; b = t;
}
if (a > c) {
t = a; a = c; c = t;
}
if (a > d) {
t = a; a = d; d = t;
}
if (b > c) {
t = b; b = c; c = t;
}
if (b > d) {
t = b; b = d; d = t;
}
if (c > d) {
t = c; c = d; d = t;
}
printf("%d,%d,%d,%d\n", a, b, c, d);
return 0;
}
没问题啊~
a b c d 是四个整形变量,上面抓图里你输入的是:1. 23. 4 .5 , 数字间加'.'圆点间隔?
输入语句:scanf_s("%d,%d,%d,%d", &a, &b, &c, &d); 输入时需按以下格式:1,2,3,4 ;数字间以英文半角',' 逗号作为间隔符。
建议将输入语句修改为:scanf_s("%d%d%d%d", &a, &b, &c, &d); ,这样在输入时,数字间以空格作为间隔符,方便输入,如:1 2 3 4
你输入的1,23,4,5之间的逗号是中文输入法下的全角逗号,不是英文下的半角逗号,导致与scanf_s中的半角逗号不匹配,最终只有第一个1是有效输入值,其它几个就成了垃圾值,因此输出乱码