二维数组 malloc - 只显示最后的项目

2D Array malloc - only last Items are shown

我想分配一个二维数组并将文件中的数据放入其中。 但它只显示我文件的最后一项。 我必须做什么?

文件中有 600.000 个数字,例如“280.000”。

double read_data(char *filename)
{

FILE *myFile = open_file(filename, "r");

int anzahl_zeilen = 0;
char zeile[80];

while (!feof(myFile))
{
    fgets(zeile, 80, myFile);
    anzahl_zeilen++;
}

rewind(myFile);


int i;

int **myArray = (int**)malloc(anzahl_zeilen*sizeof(int*));

for (i = 0; i < anzahl_zeilen; i++)
{
    myArray[i] = (int*)malloc(4*sizeof(double)); 
}



for (i = 0; i < anzahl_zeilen; i++)
{
    fscanf(myFile, "%lf %lf %lf %lf", &myArray[i,0], &myArray[i,1], &myArray[i,2], &myArray[i,3]);
}

printf("%lf %lf %lf %lf\n", myArray[0,0], myArray[0,1], myArray[0,2], myArray[0,3]);
printf("%lf %lf %lf %lf\n", myArray[1,0], myArray[1,1], myArray[1,2], myArray[1,3]);
printf("%lf %lf %lf %lf\n", myArray[2,0], myArray[2,1], myArray[2,2], myArray[2,3]);
printf("%lf %lf %lf %lf\n", myArray[3,0], myArray[3,1], myArray[3,2], myArray[3,3]);




return;
}

这个while循环

while (!feof(myFile))
{
    fgets(zeile, 80, myFile);
    anzahl_zeilen++;
}

应该改写成

while ( fgets(zeile, 80, myFile))
{
    anzahl_zeilen++;
}

还有这样的表达

&myArray[i,0]

相当于

&myArray[0]

因为在方括号内使用了带逗号运算符的表达式。看来你的意思是

&myArray[i][0] 

该函数也有 return 类型 double 但 return 什么都没有。

如果您尝试分配 double 类型的元素数组,那么在这种情况下您需要编写

double **myArray = (double**)malloc(anzahl_zeilen*sizeof(double*));

for (i = 0; i < anzahl_zeilen; i++)
{
    myArray[i] = (double*)malloc(4*sizeof(double)); 
}

并且该函数必须具有 return 类型 double ** 和 return 指针 myArray