打开、读取和打印二维数组! (我的代码有什么问题?)

Open, Read and Print a 2D Array! (What's wrong with my code?)

首先我使用 malloc 保留一些内存(文件有一个 [1024][1024] 数组),然后我使用 fopen 打开文件。然后我试图将文件读入保留内存 space。为了查看我是否正确阅读它,我尝试打印数组,但编译代码后得到的是: "Process returned -1073741819 (0xC0000005) execution time : 1.779 s" 按任意键继续。

有什么建议吗?

{

int **A = malloc(sizeof(double[1024][1024]));

FILE *matrizA = fopen("A_1024.dat", "rb");

for(int z = 0; z < 1048576; z++) {
    fread(&A, sizeof(double),1,matrizA);
}

fclose(matrizA);

for (int i = 0; i < 1024; i++) {
    for (int j = 0; j < 1024; j++) {
        printf( "%f ", A[i][j]);
    }
}

free(A);

}

此声明错误,因为指针 A 的类型无效。

int **A = malloc(sizeof(double[1024][1024]));

你必须写

double ( *A )[1024] = malloc(sizeof(double[1024][1024]));

这个循环

for(int z = 0; z < 1048576; z++) {
    fread(&A, sizeof(double),1,matrizA);
}

也是错误的。你可以写

for( size_t i = 0; i < 1048576; i++) {
    fread( ( double * )A + i, sizeof(double),1,matrizA);
}

我假设该文件恰好包含 1048576 个双打。否则你必须检查 fread 调用的 return 值。