• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:COMとユーザの対話型しりとりプログラムです。)

COMとユーザの対話型しりとりプログラムでの動作停止問題

このQ&Aのポイント
  • COMとユーザの対話型しりとりプログラムで実行すると動作が停止する問題が発生しています。
  • 問題は「しり文字と一致する単語を辞書ファイルから探す関数」の内部にあることが分かっています。
  • 辞書ファイルはひらがなの日本語辞書であり、関数の実装がややこしくなっています。

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

  • ベストアンサー
  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

どこで「動作が停止」していてそのときに変数の値がどうなっているのかをデバッガを使って確認しましたか? ・fopen()に失敗したとき、"FILE OPEN ERROR"の文字を出力した後にwhileループを実行してしまいます ・strstr()で文字列が見つからなかったとき、pの値はNULLになります。その状態でstrcmp()を実行すると...

g_pumpkin
質問者

お礼

ありがとうございました。 以下のように修正するとうまくいきました。 ------修正後------ void Com_String(char *shiri_word) { char *p=NULL; if((fpd=fopen(FILENAME,"r"))==NULL){ puts("FILE OPEN ERROR"); exit(0); } while(fscanf(fpd,"%s",com_input_buf)!=EOF){ p=strstr(com_input_buf,shiri_word); if(p==NULL){p='\0';} else if(strcmp(p,com_input_buf)==0){break;} } fclose(fpd); } ----------------------- デバッガですが、もしよろければ使い方を教えて貰えますか。 調べてみたのですが、うまくいかないです。 コンパイラはgcc です。 gcc -g a.c で実行ファイルを作って、 gdb a 'gdb'は内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチファイルとして認識されていません。 と出てしまいます。

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

関連するQ&A