【问题标题】:C - Bus error (core dumped) - Matrix errorC - 总线错误(核心转储) - 矩阵错误
【发布时间】:2017-10-05 20:22:05
【问题描述】:
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 矩阵,我们在其中存储用户输入给出的值。之后我们将数组打印到用户输入。我正在另一个程序中执行此操作,这是因为此代码,我的程序会崩溃。

有谁知道发生了总线错误?

【问题讨论】:

  • array[m][m] with m 未初始化?
  • 阅读n的目的是什么?
  • 这是从另一个代码中复制的,这是它崩溃的部分,在我的原始代码中使用了 n。

标签: c arrays 2d


【解决方案1】:

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

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

【讨论】:

  • 不客气。如果有帮助,请不要犹豫,接受答案:-)
猜你喜欢
  • 1970-01-01
  • 2013-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多