• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語でポインタを勉強しています。)

C言語でポインタを勉強しているがプログラムがうまく動かない原因は何か

このQ&Aのポイント
  • C言語でポインタを勉強しています。以下のプログラムを作成したが思ったように動かない。
  • プログラムは標準入力から文字列を読み取り、発言者と「です」を付加した文字列を表示するものです。
  • プログラムがうまく動かない原因は何でしょうか?

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

  • ベストアンサー
回答No.2

26 for ( ;; ) { 27 char comment [ MAX _ STRING ] ; 28 if ( gets ( comment ) == NULL ) { 29 break ; 30 } 31 setNameAndCommentToRecord ( name , comment , record [ currentIndex ]) ; 32 appendCommentMeow ( record [ currentIndex ]) ; 33 currentIndex ++ ; 34 } ループの中で comment がローカル宣言されてて、これに入力した内容をポインタで配列に入れようとしてるみたいだけど、ループ中で宣言されてるローカルバッファって、ループが1回終わるごとに廃棄されるように思うんだけど、そのポインタを配列で保持してても期待通りの結果にはならないんじゃないかなぁ? ちゃんと内容を保持したいのなら char *comment = malloc(MAX_STRING); というように確保しないと。 もちろん、このバッファは終了時にきちんと free() する必要がありますが。

noname#111170
質問者

お礼

ありがとうございます。指摘していただいたところを改良してみます。

その他の回答 (1)

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

>思ったようにいきません。 「何をしたときに」「どんな風に」そうなるかを 具体的に書いてください。 例:コンパイル時のエラーメッセージを提示する 「思ったようにいかない」だけでは、雲をつかむような話です。 ところで、ソースコードを貼り付けるとき、行番号は不要です。 こちら側でコンパイルしようとするとき、いちいち行番号を 削除するのが面倒くさいです。

noname#111170
質問者

お礼

すみません。次から気をつけるようにします。

関連するQ&A

専門家に質問してみよう