0

对于几天前我问过的问题,我有一个后续问题。我有一个可变长度结构,

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 并且它可以工作,但我不确定为什么它在分配后没有立即具有值。

4

0 回答 0