我正在尝试编写一个代码,该代码将在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中,它就能完美运行。我只是遇到了分段错误的问题。
提前感谢您的帮助!
答案 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;