0

我正在尝试创建一个包含文件中每一行信息的结构,因此结构的大小取决于文件的长度。C不喜欢我这样做,

int makeStruct(int x){

    typedef struct
    {
        int a[x], b[x]; 
        char c[x], d[x]; 
        char string[100][x];     
    } agentInfo;

    return 0;
}

我知道我必须使用 Malloc,但我不确定是什么。我是否必须对其中的结构和数组进行 Malloc 处理?我不知道如何 Malloc 整个结构,因为在我知道 x 之前我不知道它会有多大,所以我不能使用 size-of?任何帮助表示赞赏。

4

1 回答 1

3

您不能在 C 结构中拥有多个灵活的数组成员,因此您必须独立分配每个成员的数组:

typedef struct
{
    int *a, *b; 
    char *c, *d; 
    char (*string)[100];     
} agentInfo;

int initStruct(agentInfo *ai, int x)
{
    ai->a = malloc(x * sizeof(int));
    ai->b = malloc(x * sizeof(int));
    ai->c = malloc(x);
    ai->d = malloc(x);
    ai->string = malloc(100 * x);
    return 0;
}

你会像这样使用它:

agentInfo ai;
initStruct(&ai, 12);
于 2013-09-12T03:20:11.417 回答