#EMERGENCY !!!运行时检查失败#2 - 围绕变量'b'堆栈已损坏
问题描述:
我知道这似乎是一个老问题,但没有人回答我搜索工作的问题。 我一直在收到“运行时检查失败#2 - 堆栈变量'b'被损坏。”当我试图做[4] [2] * [2] [3]矩阵乘法。#EMERGENCY !!!运行时检查失败#2 - 围绕变量'b'堆栈已损坏
有没有人发现问题?
#include <stdio.h>
int main() {
int a[4][2] = {0};
int b[2][3] = {0};
int c[3][3] = {0};
int i, j;
printf("Please enter first matrix value\n");
for (i = 0; i < 4; i++) {
for (j = 0; j < 2; j++) {
printf("%d row, %d column:", i + 1, j + 1);
scanf("%d", &a[i][j]);
}
}
printf("Please enter second matrix value\n");
for (i = 0; i < 2; i++) {
for (j = 0; j < 3; j++) {
printf("%d row, %d column:", i + 1, j + 1);
scanf("%d", &b[i][j]);
}
}
printf("\n the result is :\n");//
for (i = 0; i < 4; i++) {
printf("[");
for (j = 0; j < 3; j++) {
c[i][j] = (a[i][0] * b[0][j]) + (a[i][1] * b[1][j]);
printf(" %4d ", c[i][j]);
}
printf("]\n");
}
return 0;
}
答
我没有检查你的代码,彻底的,但是你定义C作为3×3,这里
for (i = 0; i < 4; i++) {
printf("[");
for (j = 0; j < 3; j++) {
c[i][j] = (a[i][0] * b[0][j]) + (a[i][1] * b[1][j]);
...您可以访问C [3],这是C的第四元素,并不存在。这势必会在其他地方写。
所以检查你的索引(如@ptb观察到的,c实际上应该是四行深)。
##不要提! – pm100
应该是'int c [4] [3] = {0}' – ptb