C - Файл в целочисленную матрицу с fread читает только первое значение - PullRequest
0 голосов
/ 01 декабря 2018

У меня есть два файла, каждый из которых содержит значения квадратной матрицы.В моей программе я хочу извлечь эти значения и поместить их в 2d статические массивы.Я должен использовать fread (присваивание ..). Имена файлов и размер матриц передаются через argv.Тем не менее, только первое значение каждой матрицы читается, поэтому вывод с printf будет:

2 2 2  and 4 4 4
2 2 2      4 4 4
2 2 2      4 4 4

Вот мой код.Полагаю, я совершил глупую и простую ошибку, но не знаю, какая именно.

#include<stdio.h>  
#include<stdlib.h>


int main(int argc, char **argv){


int i,j;
int res;
int n=atoi(argv[3]);

int tab1[n][n];
int tab2[n][n];

FILE *f1;
f1=fopen(argv[1],"r");
if(f1==NULL){
    perror("Error f1");
    return EXIT_FAILURE;
}

else {

    for(i=0;i<n;i++){
        for(j=0;j<n;j++){
            fread(&(tab1[i][j]),sizeof(int),1,f1);
        }

}


FILE *f2;
f2=fopen(argv[2],"r");
if(f2==NULL){
    perror("Error f2");
    return EXIT_FAILURE;
}

else {
    for(i=0;i<n;i++){
        for(j=0;j<n;j++){
            fread(&(tab2[i][j]),sizeof(int),1,f2);
        }
    }
    fclose(f2);


    }
for(i=0;i<3;i++){
    for(j=0;j<3;j++)
        printf("%d ",tab1[i][j]);
    printf("\n");

}

printf("\n");
//displaying the matrixes
for(i=0;i<3;i++){
    for(j=0;j<3;j++)
        printf("%d ",tab2[i][j]);
    printf("\n");

}
...