我对几天前问过的问题有一个跟进问题。我有一个可变长度的结构,
typedef struct
{
int *positions1, *positions2;
char *symbols, *args;
char (*names)[100];
} agentInfo;
int initStruct(agentInfo *ai, int x)
{
ai-> positions1 = malloc(x * sizeof(int));
ai-> positions2 = malloc(x * sizeof(int));
ai-> symbols = malloc(x);
ai-> args = malloc(x);
ai-> names = malloc(100 * x);
return 0;
}
我调用并创建(mystruct)的实例。我想在每个数组中读取内容,以便我可以使用索引访问它。我在想类似的东西,
int a, b;
char c, d;
char e[100];
char buffer[100];
while(fgets(buffer, 100, fp) != NULL){
if(sscanf(buffer, "%d %d %c %s %c", &a, &b, &c, e, &d))
mystruct -> positions1[i] = a;
mystruct -> positons2[i] = b;
mystruct -> symbols[i] = c;
strcpy((mystruct -> names[i]), e);
mystruct -> args[i] = d;
i++;
}
}
当我在每次迭代时打印a,b,c,d,e时,它们看起来是正确的。如果我这样做,
printf("%d %d %c %s %c\n", (mystruct-> positions1[i]), (mystruct -> positions2[i]),
(mystruct->symbols[i]), (mystruct -> names[i]), (mystruct -> args[i])
它似乎没有将值读入我的结构中。我的索引编写错误了什么?
编辑:我最初在函数结束时使用fgets和sscanf获得了最后的printf语句。我将它移动到main并且它有效,但我不确定为什么它在赋值后没有直接的值。