• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語 関数が文字列を含む構造体を返すとき)

C言語関数: 文字列を含む構造体を返す方法

このQ&Aのポイント
  • C言語関数を使用して、文字列を含む構造体を返す方法について説明します。
  • 指定されたテストの点数を考慮し、点数の大きい方の構造体を返す関数を作成します。
  • 文字列の操作が正しく行われていないため、名前の表示に問題が発生する可能性があります。

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

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

>文字配列の操作が誤っているのでしょうか? 文字配列の操作が間違ってるのではなくて 構造体の戻り値の扱い方が間違ってます。 >printf("Top man = %s\n",Top(test1,test2).name); printf()が処理しようとするときにはTop()の返す構造体の寿命は尽きてる。

marriess
質問者

お礼

ありがとうございます。 なぜできていないのかよく分かりました。

その他の回答 (1)

noname#208507
noname#208507
回答No.2

例えば最後の部分をこうします。 struct test test3 = Top(test1,test2); printf("Top score = %d\n",test3.score); printf("Top man = %c\n",test3.name[0]); printf("Top man = %s\n",test3.name); 理由はANo.1さんの言われる通り。 関数Topは構造体を(確保されたメモリへの参照ではなく)値で返しています。値をどこかに代入しておかないと、破棄されてアクセスできなくなってしまいます。

marriess
質問者

お礼

解説ありがとうございます。 おかげさまで解決しました。

関連するQ&A