質問: 構造体の各データの表示について以下のようなプログラムを作成しました。 構造体の各データの表示について以下のようなプログラムを作成しました。 #include struct tb{ char name[20]; char sex; int age; double height; double weight; }; int main(void) { int i; struct tb test[2]; test[0].name="amada" test[0].sex='f'; test[0].age=20; test[0].height=172.5; test[0].weight=62.5; test[1].name="okada"; test[1].sex='f'; test[1].age=21; test[1].height=180.2; test[1].weight=70.8; for(i=0; i<2; i++){ printf("%s %s %d %f %f \n",test[i].name,test[i].sex,test[i].age,test[i].height,test[i].weight); } return 0; } ファイル名を適当にsample.cとしてgcc sample.c した所、以下のようなコンパイルエラーが出ました。 sample.c: in function ‘main’: sample.c:18: error: incompatible types when assigning to type ‘char[20]’ from type ‘char *’ sample.c:18: error: expected ‘;’ before ‘test’ sample.c:23: error: incompatible types when assigning to type ‘char[20]’ from type ‘char *’ このエラーを元にソースをどのように修正したらよいか教えて頂けますでしょうか? よろしくお願いいたします。
回答: sample.c:18: error: incompatible types when assigning to type ‘char[20]’ from type ‘char *’ 構造体の宣言時の初期設定以外で、配列要素に文字列リテラルは代入できません。 strcpy関数等でコピーしてください。 sample.c:18: error: expected ‘;’ before ‘test’ 文末の「;」が抜けています。 sample.c:23: error: incompatible types when assigning to type ‘char[20]’ from type ‘char *’ これが一番上と同じ。