[英]Multidimensional arrays loading in C
我想加载3个2d数组,它们应该是2d指针浮点类型数组。 我想将它们加载为三个2d数组,其中3为2d数组的总数。 我将这些2d数组作为原始文件命名为array_10,array_100,array_140。 我编写以下代码来加载一个数组:我不知道如何将所有这些数组一起加载...请在下面检查我的代码,如果将数组内核作为2d Pointer **也会显示错误,请帮助
int table=3, krow=99, kcol=99;
float **kernel[table][krow]kcol];
if (table ==0)
{
sprintf(fn,"F:\\newresult\\fft\\array_10.raw");
if ((f2=fopen( fn, "rb" ))==NULL)
{
printf("file does not exists %s\n",fn);
exit(1);
}
for(int a = 0; a < krow; ++a)
for(int b = 0; b < kcol; ++b)
fread(&kernel[a][b], sizeof(float),1,f2);
fclose(f2);
for(int a = 0; a < krow; ++a)
for(int b = 0; b < kcol; ++b)
sum+=Kernel[a][b];
for(int a = 0; a < krow; ++a)
for(int b = 0; b < kcol; ++b)
Kernel[a][b] /= sum;
}
这是一个显而易见的解决方法:
float kernel[table][krow][kcol];
代替
float **kernel[table][krow]kcol];
另外,如果要读取表N,行a和col b的数据,则可以这样读取:
fread(&kernel [N] [a] [b],sizeof(float),1,f2);
一些修复:
const int krow=99, kcol=99;
float kernel[krow][kcol]; // <<< 2D array of float
char fn[PATH_MAX];
FILE *f2;
float sum;
if (table == 0)
{
strcpy(fn, "F:\\newresult\\fft\\array_10.raw");
if ((f2=fopen( fn, "rb" ))==NULL)
{
printf("file does not exists %s\n",fn);
exit(1);
}
for(int a = 0; a < krow; ++a)
for(int b = 0; b < kcol; ++b)
fread(&kernel[a][b], sizeof(float), 1, f2); // <<< read one float
fclose(f2);
sum = 0; // <<< initialise sum
for(int a = 0; a < krow; ++a)
for(int b = 0; b < kcol; ++b)
sum+=kernel[a][b];
for(int a = 0; a < krow; ++a)
for(int b = 0; b < kcol; ++b)
kernel[a][b] /= sum;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.