|
>ありがとうございます。今日やってみたらうまくいきました、charとintでは、
>違うんですね。
charとintが違うんじゃなくて配列が違うと言う方が正しいですね。
int foo[SIZE], bar[SIZE];
という配列foo, barがあったとしてfoo = bar;はコンパイルが通りません。
配列名だけでは左辺値になれないからです。
配列はその要素を一つづつコピーするしかありません。文字列のコピーはよく使うのでstrcpyと言う標準関数が用意されています。
ところで構造体は代入でコピーすることができます。
#include <stdio.h>
#include <string.h>
int main(void)
{
struct Kouzoutai {
int hoge;
double piyo;
char fuga[10];
} foo, bar;
foo.hoge = 10;
foo.piyo = 1.4142;
strcpy(foo.fuga, "abcdefg");
bar = foo;
printf("%d, %f, %s\n", bar.hoge, bar.piyo, bar.fuga);
return 0;
}
foo = bar;と一発で代入できます。メンバに配列があっても
大丈夫です。しかしポインタでメモリ領域を確保しているようなメンバがあるとバグの温床になったりするのでよく理解してから使ってください。
|