C-具有fread的文件到整数矩阵仅读取第一个值

时间:2018-12-01 20:33:07

标签: c matrix multidimensional-array fread

我有两个文件,每个文件包含一个方矩阵的值。 在我的程序中,我想提取这些值并将其放入2d静态数组中。我必须使用fread(assignment ..)。文件名和矩阵大小通过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");

}

0 个答案:

没有答案