• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:構造体の各メンバにfor文からアクセスする)

構造体の各メンバへのアクセス方法をループで実装する方法について

このQ&Aのポイント
  • VC++2005で開発している場合、構造体の各メンバにfor文からアクセスする方法について教えてください。
  • ループ文を使用して、strcpyで構造体の各メンバに値を代入する方法についてお知りになりたいです。
  • 現在、strcpyの部分をループ文でまわす方法についてアドバイスをいただけますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.1

できますけど、あまり意味の無いような気がします。 int offset[] = { offsetof(Sample,test1), offsetof(Sample,test2), offsetof(Sample,test3) }; int i; for(i=0; i<sizeof x/sizeof(char*); i++){ strcpy((char*)&sample+offset[i],x[i]); }

noname#201551
質問者

お礼

ご回答ありがとうございます。 今回はポインタ配列を使用することにしました。 (データ型がすべてcharなので)

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

C言語の場合。 例えば int test1,test2,test3 ; とかの変数をループで回すことってできませんよね?構造体のメンバも同様です。 typedef struct { char test[10][10]; }Sample; 等と二次元配列にするとか、 何度も出てくるなら structSampleCopy( Sample *dst, char **src ) みたいな関数にするとか、 指定した数値に対応するメンバのアドレスを返すmemberAddressみたいな関数を用意して strcpy( memberAddress(&sample,i ) ,X[i] ) ; みたいに各メンバの先頭アドレスに直接アクセスするか でしょうか。

noname#201551
質問者

お礼

ご回答ありがとうございます。 今回はポインタ配列を使用することにしました。 (データ型がすべてcharなので)

関連するQ&A

専門家に質問してみよう