• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:構造体の各データの表示について以下のようなプログラムを作成しました。)

構造体の各データの表示についてのプログラム作成とコンパイルエラー

このQ&Aのポイント
  • C言語において、構造体の各データを表示するプログラムを作成しましたが、コンパイルエラーが発生しました。
  • プログラムの修正によってコンパイルエラーを解消する方法を教えてください。
  • プログラム内で構造体のメンバーに文字列を代入する際にエラーが発生しています。

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

  • ベストアンサー
  • andy_kun
  • ベストアンサー率23% (64/274)
回答No.2

エラーメッセージに書いてある通り 構造体を以下のように定義するか struct tb{ char name[20]; -> char *name char sex; int age; double height; double weight; }; #include <string.h> を追加して strcpy(test[0].name,"amada"); にするかのいずれか(後者の方がいいと思うけどね) あとは >test[0].name="amada" 文末に;が無いね。

nardobrea
質問者

補足

直してもエラーが出たので詰まりましたが、アドバイスのおかげで 何とか出来ました。ありがとうございました

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • rict-mict
  • ベストアンサー率29% (9/31)
回答No.4

まずtest[0].name="amada"に『;』が抜けています。まあ今回はこれが原因ではありませんが・・・・ 最初に#include <stdio.h>だけなく#include <string.h>をその下に入力してください。 次にtest[0].name="amada";では実行できません。 strcpy(test[0].name,"amada");と書き換えてください。 同様にtest[1].name="okada";をstrcpy(test[1].name,"okada");に書き換えてください。 これでいいはずですよ

nardobrea
質問者

補足

文字のコピーはそのままではダメなんですね。 勉強になりました。ありがとうございました。

すると、全ての回答が全文表示されます。
回答No.3

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 *’ これが一番上と同じ。

nardobrea
質問者

補足

「;」にすら気付かないとは… 焦っていたのかな? ありがとうございました。

すると、全ての回答が全文表示されます。
  • hanmemomo
  • ベストアンサー率35% (205/580)
回答No.1

test[0].name="amada" これを strcpy(test[0].name,"amada"); test[1].name="okada"; これも strcpy(test[1].name,"okada"); です。 間違いの理由は 文字列へ文字列へのポインターを代入したとエラーになっています。 つまり、 test[1].name="okada"; これは暗示キャストをつけると (char[20])test[1].name=(char *)"okada"; なので、型が違うので代入はできないよーということです。

nardobrea
質問者

補足

ありがとうございました。おかげ様で解決できました。

すると、全ての回答が全文表示されます。