对于几天前我问过的问题,我有一个后续问题。我有一个可变长度结构,
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 并且它可以工作,但我不确定为什么它在分配后没有立即具有值。