调用函数时的分段错误

时间:2013-11-16 00:40:10

标签: c segmentation-fault

我正在尝试编写一个代码,该代码将在main中定义一个数组,在fillArray中使用随机浮点数填充该数组,然后在printArray中打印该数组。这是我到目前为止所拥有的。

#include <stdio.h>
#include <stdlib.h>

float fillArray (float array[7][5]);
float printArray (float array[7][5]);

int main ()
{
  float array[7][5];
  fillArray (array);
  printArray (array);
}

float fillArray (float array[7][5])
{
  int row, column;
  for (row = 0; row < 7; row++)
    {
      for (column = 0; row < 5; column++)
        {
          array[row][column] = (float) rand () / (float) RAND_MAX;
        }
    }
}

float printArray (float array[7][5])
{
  int Row, Column;
  for (Row = 0; Row < 7; Row++)
    {
      for (Column = 0; Column < 5; Column++)
        {
          printf ("%4.2f ", array[Row][Column]);
        }
      printf ("\n");
    }
}

正在产生分段错误。我已经找到了未定义的变量或未分配的内存但找不到任何其他问题,而且我发现的其他所有问题都是专门处理未定义的变量(除非我错过了一个,在这种情况下我非常抱歉)。如果我将整个代码打包在main中,它就能完美运行。我只是遇到了分段错误的问题。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

for (row = 0; row < 7; row++)
{
  for (column = 0; row < 5; column++) // column=0,row<5? it is infinite loop and segfault
    {
      array[row][column] = (float) rand () / (float) RAND_MAX;
    }
}

你可能意味着     for(column = 0; column&lt; 5; column ++)

此代码存在许多问题,但您可以在修复最重要的代码后找到它们,即上面的循环条件。

答案 1 :(得分:1)

我猜你在第二个循环中使用了错误的变量row而不是column

float fillArray (float array[7][5])
{
  int row, column;
  for (row = 0; row < 7; row++)
    {
      for (column = 0; row < 5; column++)
        {
          array[row][column] = (float) rand () / (float) RAND_MAX;
        }
    }
}

这应该会导致分段错误

 array[row][column] = (float) rand () / (float) RAND_MAX;
相关问题