【问题标题】:2 simple loops not working together, segmentation fault2个简单的循环不能一起工作,分段错误
【发布时间】:2013-10-24 12:46:15
【问题描述】:

好的,所以无论我使用 FOR 或 WHILE 循环,它们都可以单独工作,但是当我在它之后键入相同类型的循环时,它会编译但在运行后它会给我错误“分段错误(核心转储)”或有时“总线错误核心转储”

我现在正在使用 2 个二维数组,我需要制作通用矩阵程序。现在代码用于输入。如果我在 /* 和 */ 之间添加一个循环,剩下的循环可以正常工作!

#include <stdio.h>

int main()
{
int i, j, k, l; //I, J for array matrix a, K, L for matrix b
int a[i][j]; //matrix of size i by j
int b[k][l];
int rowa=0, cola=0, rowb=0, colb=0;
//rowa is ROW no. of array a and colb e.g Column no. for array b

printf("size of matrix a: ");
scanf("%d\n%d", &i, &j); //i is row, j is column

printf("size of matrix b: ");
scanf("%d\n%d", &k, &l); //k is row, l is column


while (rowa < i)
{
    while (cola < j)
    {
    statements
    }
statements
}

while (rowb < k)
{
        while (colb < l)
    {
    statements
    }
statements
}

return 0;
}

那我该怎么办?谢谢

【问题讨论】:

  • 您是否尝试过使用调试器?如果您使用的是基于 linux 的系统,我建议您使用gdb。而且,请修正你的缩进:-)

标签: c loops multidimensional-array segmentation-fault


【解决方案1】:

您正在使用导致未定义行为的未初始化变量:

int i, j, k, l; //I, J for array matrix a, K, L for matrix b
int a[i][j]; //matrix of size i by j
...
printf("size of matrix a: ");
scanf("%d\n%d", &i, &j); //i is row, j is column

你应该在a[i][j]声明之前初始化ij,即

printf("size of matrix a: ");
scanf("%d\n%d", &i, &j);
// initialize the matrix:
int a[i][j];

【讨论】:

  • 是的,谢谢。现在在数组初始化之前放置 printfscanf ,工作正常。现在看来合乎逻辑。
猜你喜欢
  • 2021-09-19
  • 1970-01-01
  • 2017-01-13
  • 2022-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
相关资源
最近更新 更多