Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
运行时检查失败#2-围绕变量';d';他被腐蚀了。(Visual Studio下的C编程) 你好,我是新来的,在C.编程,我不想问一些你认为简单的事情,但是我已经要求我的同学,甚至我的编程老师看看他们是否能找到错误,但是直到今天他们还没找到(他们)。_C_Visual Studio_Visual C++ - Fatal编程技术网

运行时检查失败#2-围绕变量';d';他被腐蚀了。(Visual Studio下的C编程) 你好,我是新来的,在C.编程,我不想问一些你认为简单的事情,但是我已经要求我的同学,甚至我的编程老师看看他们是否能找到错误,但是直到今天他们还没找到(他们)。

运行时检查失败#2-围绕变量';d';他被腐蚀了。(Visual Studio下的C编程) 你好,我是新来的,在C.编程,我不想问一些你认为简单的事情,但是我已经要求我的同学,甚至我的编程老师看看他们是否能找到错误,但是直到今天他们还没找到(他们)。,c,visual-studio,visual-c++,C,Visual Studio,Visual C++,但首先让我描述一下我所知道的,它说: “运行时检查失败#2-堆栈变量“d”(有时是m和 其他y)已损坏” 我的工作是尝试调试它,但问题总是显示在最后一个代码行(主体),所以我无法找到问题的确切位置,这里我附加了代码,如果您找到问题并向我解释我得到它的原因,我将非常高兴(以后不再重复相同的错误)=D #包括 #包括 #包括 /*类型声明*/ #定义真1 #定义false 0 typedef字符布尔; /*功能声明*/ 布尔测试(短int d,短int m,长int y); 布尔nextday(短整

但首先让我描述一下我所知道的,它说:

“运行时检查失败#2-堆栈变量“d”(有时是m和 其他y)已损坏”

我的工作是尝试调试它,但问题总是显示在最后一个代码行(主体),所以我无法找到问题的确切位置,这里我附加了代码,如果您找到问题并向我解释我得到它的原因,我将非常高兴(以后不再重复相同的错误)=D

#包括
#包括
#包括
/*类型声明*/
#定义真1
#定义false 0
typedef字符布尔;
/*功能声明*/
布尔测试(短int d,短int m,长int y);
布尔nextday(短整数d、短整数m、长整数y);
内部主(空)
{
/*变量初始化*/
短整数d=0,m=0;
长整型y=0;
做{
/*按用户列出的数据*/
printf(“数字进入”);
scanf(“%ld”、&y);
}y<0;
做{
printf(“入口编号:”);
scanf(“%d”、&m);
}而(m<1 | | m>12);
做{
printf(“入口直径编号”);
scanf(“%d”、&d);
}而(d<01 | |(test(d,m,y)=false));//如果数据错误,则重新键入数据
//如果nextday函数返回值为true,则第二天为01,如果不是一天的总和
如果(nextday(d,m,y)=true){
d=01;
//如果我们开始新的一年,新的月份必须是01-01-01。
如果(m==12){
m=01;
y++;
}
//只需增加其他月份的月份
否则{
m++;
}
}
否则{
d++;
}
printf(“Mañana será:%d-%d-%ld\n”,d,m,y);
返回0;
}
布尔测试(短整数d、短整数m、长整数y){
int max;
开关(m){
案例1:
案例3:
案例5:
案例7:
案例8:
案例10:
案例12:
最大值=31;
打破
案例4:
案例6:
案例9:
案例11:
最大值=30;
打破
案例2:
如果(y%400==0){
最大值=29;
}
如果(y%100==0),则为else{
最大值=28;
}
如果(y%4==0),则为else{
最大值=29;
}
否则{
最大值=28;
}
打破
}
如果(d您需要使用:

scanf( "%hd", &m );
scanf( "%hd", &d );
因为它们是短整数

使用“%d”基本上是在
小int
存储空间中加载
int
大小变量

int
通常是4个字节,而
小int
是2个字节

scanf( "%d", &m );  

%d
表示“此参数指向
int
”您提供的是指向
short int
的指针。可以使用
%hd
(对于
short int int
),或者最好将
m
更改为键入
int
(为什么要在这里使用
short int int
).

很可怕,你的老师没有看到格式问题。
scanf( "%d", &m );