我正在尝试读取矩阵文件,其中前两行显示行数,然后显示数组中的列。之后,每行包含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");
}
答案 0 :(得分:2)
虽然您的数组索引仅来自0..row1-1
和0..col1-1
,但数组维度必须为row1
和col1
:
double input[row1][col1];
答案 1 :(得分:1)
输入数组声明为row1 - 1行。因此它们从0到第1 - 2行编号。您正在从0迭代到第1行 - 1。所以最后一次访问超出范围。列的问题相同。
我认为你真的希望第一行是input[row1][col1]
。