2d数组中的总线错误

时间:2013-11-26 16:55:24

标签: c arrays unix

我正在尝试读取矩阵文件,其中前两行显示行数,然后显示数组中的列。之后,每行包含1个double作为该矩阵的一个条目(以行遍历格式)。我可以很好地读取大部分数据,但是当我尝试获取倒数第二行(10x10中的第8行或5x3中的第3行等)时,我会收到总线错误。

  double input[row1-1][col1-1];
  char buffer[50];
  int i, j;
  for(i = 0; i < row1; i++)
  {
    for(j = 0; j < col1; j++)
  {
    if(fgets(buffer, 50, f1) == NULL)
      printf("error \n");
    else 
    {
      input[i][j] = atof(buffer);
      printf("%f ", input[i][j]);
    }
  buffer[0] = '\0';
  }
printf("\n");
}

2 个答案:

答案 0 :(得分:2)

虽然您的数组索引仅来自0..row1-10..col1-1,但数组维度必须为row1col1

double input[row1][col1];

答案 1 :(得分:1)

输入数组声明为row1 - 1行。因此它们从0到第1 - 2行编号。您正在从0迭代到第1行 - 1。所以最后一次访问超出范围。列的问题相同。

我认为你真的希望第一行是input[row1][col1]