C数组正在覆盖索引

时间:2017-11-15 20:46:59

标签: c arrays

我正在阅读2个不同的文件并在每个文件上运行此功能。 文件格式为

2
3  
8 7 6 
5 4 3  

我正在使用的代码是

void readFile(char txtName[], int k, int matrix){
    int c = 0;
    int i = 0;
    int j = 0;
    int x = 0;
    //Open file
    FILE *txt;
    txt = fopen(txtName, "r");
    //Go till the end of the file
    while( fscanf(txt, "%d", &c) != EOF ){
        //For assigning matrix A
        if(matrix == 1){
            //Used to skip over the first 2 inputs.
            if(x > 1){
                //Got to the end of the row increase to the next row.
                if(j == k){
                    i++;
                    j = 0;
                }
                //Assiging c to A
                A[i][j] = c;
                printf("%d A in matrix %d %d\n", A[i][j], i, j);
                j++;
            }
        x++;
        }            
    }
    fclose(txt);
}

int main( int argc, char *argv[] )  {
    readFile(argv[1], k, 1);
    int m = 2;
    int k = 3;
    int i;
    int j;
    for(i=0; i < m; i++){
        for(j=0; j < k; j++){
            printf("%d", A[i][j]);
        }
        printf("\n");
    }
}

我正在尝试使用该文件初始化一个二维数组,以便它是一个矩阵。文件的第一个值是m,第二个是k。所以从文件发布。它是一个2x3矩阵,其值低于它。 A是设置为A [2] [3];

的全局数组

我遇到的问题是当我运行此代码时,我的数组出现了

8 7 5
5 4 3

我不知道为什么。我已经为调试放了很多print语句。当涉及到i = 0和j = 2时,它打印出6.但是当我在函数A [0] [2] = 5之后打印数组时,我正在制作的错误在哪里?

1 个答案:

答案 0 :(得分:0)

您的问题可能与while( fscanf(txt, "%d", &c) != EOF )有关。只需尝试使用while( fscanf(txt, "%d", &c))并检查。