C - 总线错误(核心转储) - 矩阵错误

时间:2017-10-05 20:22:05

标签: c arrays 2d

int main(int argc, char **argv) {       
    int n, m, number, array[m][m];
    scanf("%d %d", &n, &m);
    for (int k = 0; k < m; ++k) {
        for (int i = 0; i < m; ++i) {
            scanf("%d ", &number);
            array[k][i] = number;
            printf("%d ", array[k][i]);
        }
        printf("\n");
    }
    printf("\n");

    for (int k = 0; k < m; ++k) {
        for (int i = 0; i < m; ++i) {
            printf("%d k=%di=%d\n", array[k][i], k, i);
        }
        printf("\n");
    }
}

我一直收到错误:

Bus error (core dumped)

我们有一个m * m矩阵,我们在其中存储用户输入上给出的值。然后我们将数组打印到用户输入。我在另一个程序中执行此操作,这是因为此代码,我的程序将崩溃。

有没有人知道发生了总线错误?

1 个答案:

答案 0 :(得分:4)

声明一个可变长度数组,其中维度基于未初始化的值。在读入m后推迟数组声明应解决问题:

int n,m, number;
scanf("%d %d", &n, &m);
int array[m][m];