2013-11-26 121 views
0

我想读取一个矩阵文件,其中前两行显示行数,然后显示数组中的列。在此之后,每行包含1个双精度数据作为该矩阵的条目(以行遍历格式)。我可以在大多数的数据精细读,但我得到一个总线错误时,我尝试获得第二到最后一行(8日在一个5×3 10×10或第三等)二维数组中的总线错误

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

双输入[row1-1] [col1-1]; 应该是双输入[row1] [col1]; –

回答

2

虽然你的阵列索引将只能走从0..row1-10..col1-1,阵列尺寸必须row1col1

double input[row1][col1]; 
1

输入数组被声明为具有ROW1 - 1行。所以它们的编号从0到row1 - 2。你从0迭代到1 - 1。所以最后的访问超出了界限。与列相同的问题。

我想你其实想要的第一行是input[row1][col1]