我试图创建一个包含文件中每行信息的结构,因此结构的大小取决于文件的长度。 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结构和其中的数组?我不知道我对整个结构的看法如何,因为在我知道x之前我不知道它有多大,所以我不能使用size-of?任何帮助赞赏。
答案 0 :(得分: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);