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 クエリ実行が急に非常に...
-
VC++から引数付きexeファイルの...
-
WScript.Echo と msgbox
-
Setup1.vbp の Setup1.frmとは
-
eclipseで作ったプログラムを他...
-
アプリで作成したexeファイルを...
-
VS codeを使って、ラズパイ Pic...
-
アウトルックが開かない
-
LINK : fatal error LNK1104に...
-
c/c++ ビルドしたにもかかわら...
-
Jarファイルのマニフェストにつ...
-
hostsファイルを置き換える and...
-
OLE又はDDEを使うVISUAL BESIC...
-
exewrapで変換したexeファイル...
-
ローカルのHTMLからexeファイル...
-
java アプリケーション実行時の...
-
Windows10 PW有のzipフォルダ内...
-
エクセルVBAよりBATファイルを...
-
実行時エラー:ファイルがオー...
-
Tomcat停止後の処理継続について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access クエリ実行が急に非常に...
-
OLE又はDDEを使うVISUAL BESIC...
-
VC++から引数付きexeファイルの...
-
xismoについてです!開こうとす...
-
LINK : fatal error LNK1104に...
-
JavaScriptでコマンドプ...
-
VBAでMP3を鳴らしたい
-
c/c++ ビルドしたにもかかわら...
-
コンパイル ./aと./a.out の違い
-
WScript.Echo と msgbox
-
64bit環境で32bitのodbc参照
-
VBAでEXEファイルを動かす方法...
-
ローカルのHTMLからexeファイル...
-
VB6.0で作ったプロジェクトが起...
-
batからexeを実行し戻り値を受...
-
VC++での外部プログラムの実行
-
VBフォームアプリケーションに...
-
jarファイル実行時の環境変数の...
-
jarファイルとjava.exeの関連付...
-
デスクトップにショートカット...
おすすめ情報