0

ファイルの各行からの情報を含む構造を作成しようとしているため、構造のサイズはファイルの長さに依存します。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 する必要がありますか? x を知るまで構造体がどのくらいの大きさになるかがわからないため、構造体全体を Malloc する方法がわからないため、size-of? を使用できません。どんな助けでも感謝します。

4

1 に答える 1

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);
于 2013-09-12T03:20:11.417 に答える