0

構造体の配列へのポインターを引数として取る関数があります。

void foo (int *StructArrayAddress)

関数内で、次のような新しい構造体を作成します

struct
{
    int a;
    int b;
    char c[10];
}myStruct;  

次に、引数として受け取った配列へのポインターに基づいて、その構造体を構造体の配列にコピーします。構文がうまくいかないか、何か不足しています。誰でもアドバイスできますか?ありがとう!

編集:ここに投稿された解決策が私がやりたいことだとは思わないので、私は自分自身を正しく説明したかどうかわかりません. 明確にするために、ここに私の関数の外にいくつかの構造体の配列があります。関数の引数として、構造体の配列内の正しい構造体要素のアドレスを受け取ります。発信者がすでに正しいアドレスを渡してくれていると仮定します。インデックスを作成する必要はまったくありません。

次に、他のデータから構造体をローカルに構築します。ここで、ローカルに構築したこの構造体を、引数として受け取った配列内の場所にある構造体にコピーしたいと考えています。

void foo (int *StructArrayAddress)
{
    struct
    {
        int a;
        int b;
        char c[10];
    }myStruct;

    a = 5;
    b = 10;
    c = {1,2,3,4,5,6,7,8,9,10};

    //Copy local struct myStruct to location StructArrayAddress here
    StructArrayAddress = myStruct; //Something like this but I have the syntax wrong
}

それがより理にかなっていることを願っています。

EDIT2:私が行方不明だったことをあなたたちが私に伝えようとしていたことに気付いたかもしれません:私がそれを返すときの構造のフォーマットが知られているように、何らかの方法で引数に必要な私のローカル構造体への参照ですか?

4

1 に答える 1

0

関数定義は次のようになります

void foo (myStruct *StructArrayAddress, int index)
{
     myStruct x;
     x.a = 1;
     x.b = 2;
     strncpy(x.c, "Test", 9);

     /* Now copy this struct to the array of structs at index specified by second argument */

     memcpy((StructArrayAddress + index), &x, sizeof(myStruct));


}
于 2013-01-09T01:25:41.993 に答える