将东西存储到可变大小的结构中

时间:2013-09-15 02:58:12

标签: c arrays string iteration structure

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

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并且它有效,但我不确定为什么它在赋值后没有直接的值。

0 个答案:

没有答案