首页 > 解决方案 > 如何从 C 中的函数返回结构数组?

问题描述

我正在尝试fread在辅助函数内的数组中创建一个结构和文件数据数组。incompatible pointer type编译程序时不断出错。这是我当前的代码:

 struct fentry *read_fentries(FILE *fp){
    fentry *files[MAXFILES];

    // EXTRACT FENTRIES AND FNODES FROM FILE
    if ((fread(files, sizeof(fentry), MAXFILES, fp)) == 0) {
        fprintf(stderr, "Error: could not read file entries\n");
        closefs(fp);
        exit(1);
    }
    return files;
}

终端输出

我的主要问题是如何创建一个预定义大小(MAXFILES)的结构数组并从函数中返回它,以便我可以访问我的main. 我必须使用分配内存malloc吗?

标签: carraysfunctionpointersstruct

解决方案


如果你包装数组,你也可以返回值。

#define MAXFILES 50

struct _fentry
{
    FILE *fp;
    int somedata[3];
    double anotherdata[10];
    /* ... */
};

struct fentry
{
    struct _fentry entries[MAXFILES];
};


struct fentry foo()
{
    struct fentry entries;

    /* .... */

    return entries;
}

推荐阅读