- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語 関数が文字列を含む構造体を返すとき)
C言語関数: 文字列を含む構造体を返す方法
このQ&Aのポイント
- C言語関数を使用して、文字列を含む構造体を返す方法について説明します。
- 指定されたテストの点数を考慮し、点数の大きい方の構造体を返す関数を作成します。
- 文字列の操作が正しく行われていないため、名前の表示に問題が発生する可能性があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>文字配列の操作が誤っているのでしょうか? 文字配列の操作が間違ってるのではなくて 構造体の戻り値の扱い方が間違ってます。 >printf("Top man = %s\n",Top(test1,test2).name); printf()が処理しようとするときにはTop()の返す構造体の寿命は尽きてる。
その他の回答 (1)
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は構造体を(確保されたメモリへの参照ではなく)値で返しています。値をどこかに代入しておかないと、破棄されてアクセスできなくなってしまいます。
質問者
お礼
解説ありがとうございます。 おかげさまで解決しました。
お礼
ありがとうございます。 なぜできていないのかよく分かりました。