- ベストアンサー
構造体のデータを丸ごとコピーしたい
C言語の構造体の勉強をしています。 構造体のデータを丸ごとコピーしたいのですが、今までは下記プログラムの★1の方法で1つ1つやっていました。 しかし変数が増えてきたのでできれば一度にコピーをしたいのですが、★2の方法では場合によってはゴミが含まれてしまいます。 そこで★3の方法で試すと今のところコピーできたのですが、これは安全なのでしょうか? ご存知の方がおられればお願いします。 また、もっといい方法があればご伝授いただけると助かります。 #include <stdio.h> #include <string.h> struct Sample{ int val1; int val2; }; void test(Sample *p, int num){ Sample d; switch(num){ case 1: //★1 d.val1 = p->val1; d.val2 = p->val2; break; case 2: //★2 memcpy(&d, p, sizeof(Sample)); break; case 3: //★3 d = *p; break; } printf("val1:%d, val2:%d\n", d.val1, d.val2); } int main(){ Sample s; s.val1 = 1; s.val2 = 2; test(&s, 1); return 0; }
- みんなの回答 (6)
- 専門家の回答