繁体   English   中英

用C加载多维数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM