2013-11-26 4 views
0

처음 2 행에 행의 수와 배열의 열이 표시되는 행렬 파일을 읽으려고합니다. 그 후 각 행은 해당 행렬에 대한 항목으로 double을 1 개 포함합니다 (행 통과 형식). 나는 (하는 5x3의 10 × 10 또는 3에서 8 등)을 마지막 행에 초를 얻으려고 할 때 배열 비록2d 배열의 버스 오류

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

double input [row1-1] [col1-1]; 은 double input이어야합니다. [row1] [col1]; –

답변

2

나는 데이터 벌금의 대부분에서 읽을 수 있지만 나는 버스 오류를 얻을 수 인덱스는 0..row1-10..col1-1에서, 배열의 크기가 row1col1을해야 갈 것입니다 :

double input[row1][col1]; 
1

입력 배열 ROW1 가지고 선언 - 1 행을. 따라서 0에서 row1-2까지 번호가 매겨집니다. 0에서 row1 - 1까지 반복됩니다. 따라서 마지막 액세스가 범위를 벗어납니다. 열에도 같은 문제가 있습니다.

실제로 첫 번째 줄을 input[row1][col1] (으)로하고 싶습니다.