
COMとユーザの対話型しりとりプログラムです。
コンパイルエラーは出ないのですが、実行すると動作が停止します。
問題は「しり文字と一致する単語(すべて日本語です)を辞書ファイル(txtファイル)から探す関数」
内にあることが分かっています。
------関数部分のみ-------
void Com_String(char *shiri_word){
char *p;
if((fpd=fopen(FILENAME,"r"))==NULL)puts("FILE OPEN ERROR");
while(fscanf(fpd,"%s",com_input_buf)!=EOF){
p=strstr(com_input_buf,shiri_word);
if(strcmp(p,com_input_buf)==0){break;}
else{p=NULL;}
}
fclose(fpd);
}
-------終---------
日本語のひらがな辞書ファイルなので、ややこしいことになってしまいました。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
どこで「動作が停止」していてそのときに変数の値がどうなっているのかをデバッガを使って確認しましたか?
・fopen()に失敗したとき、"FILE OPEN ERROR"の文字を出力した後にwhileループを実行してしまいます
・strstr()で文字列が見つからなかったとき、pの値はNULLになります。その状態でstrcmp()を実行すると...
ありがとうございました。
以下のように修正するとうまくいきました。
------修正後------
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- PHP 画像ファイルの名前をそのままURLにする 3 2022/10/16 11:18
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access クエリ実行が急に非常に...
-
コマンドプロンプトで外のexeや...
-
OLE又はDDEを使うVISUAL BESIC...
-
unlha32.dll を使用した自己解...
-
WSHでファイル比較処理について
-
VB6で、C言語の(argv,argc)み...
-
プログラム内でのワイルドカー...
-
vscodeを最近いれてjavaを勉強...
-
VBAで他のプログラムが起動して...
-
eclipseで作ったプログラムを他...
-
以下のように複数のファイルを...
-
【HTML】 Wordファイルの指定...
-
JavaScriptでコマンドプ...
-
batからexeを起動した際の戻り...
-
Open JTalk2の文字列読み上げに...
-
ローカルのHTMLからexeファイル...
-
C言語初心者の質問失礼します。
-
どんなプログラムを書いても指...
-
バッファとは何ですか
-
自民党が「高齢者の医療費負担...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access クエリ実行が急に非常に...
-
JavaScriptでコマンドプ...
-
OLE又はDDEを使うVISUAL BESIC...
-
c/c++ ビルドしたにもかかわら...
-
VBAでEXEファイルを動かす方法...
-
コマンドプロンプトで外のexeや...
-
VC++から引数付きexeファイルの...
-
コンポーネント`MSCOMM32.cox'...
-
VBAで他のプログラムが起動して...
-
JARファイルをEclipseを使って...
-
ローカルのHTMLからexeファイル...
-
JAVA .jarファイルに再圧縮する...
-
以下のように複数のファイルを...
-
実行ファイルと実行モジュール...
-
64bit環境で32bitのodbc参照
-
LINK : fatal error LNK1104に...
-
VB6.0で作ったプロジェクトが起...
-
jarの開き方を教えてください。
-
ネットワーク越しのEXEファ...
-
eclipseで作ったプログラムを他...
おすすめ情報