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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
あるあるbotに投稿したけど採用されなかったあるある募集
あるあるbotに投稿したけど採用されなかったあるあるをこちらに投稿してください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
C言語でしりとりのプログラムを作ろうとしているのですが、わからないことがありまして
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
LINK : fatal error LNK1104に...
-
jarファイルとjava.exeの関連付...
-
exeファイルをすぐに終了させな...
-
.exeファイルについて
-
WScript.Echo と msgbox
-
JARファイルをEclipseを使って...
-
Access クエリ実行が急に非常に...
-
VC++から引数付きexeファイルの...
-
VC++での外部プログラムの実行
-
VBからhtaファイルを開くには?
-
JavaScriptでコマンドプ...
-
VB.NET リソースの埋め込みにつ...
-
フォルダ内の特定 拡張子のファ...
-
バイナリ内へのファイルの内包
-
OLE又はDDEを使うVISUAL BESIC...
-
c言語でファイルのタイムスタン...
-
指定URLでブラウザを開くほか
-
VBAでEXEファイルを動かす方法...
-
バッファとは何ですか
-
フルパスから最後のディレクト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access クエリ実行が急に非常に...
-
OLE又はDDEを使うVISUAL BESIC...
-
JavaScriptでコマンドプ...
-
VBAで他のプログラムが起動して...
-
VBAでEXEファイルを動かす方法...
-
LINK : fatal error LNK1104に...
-
c/c++ ビルドしたにもかかわら...
-
jarの開き方を教えてください。
-
eclipseで作ったプログラムを他...
-
VBAでMP3を鳴らしたい
-
ローカルのHTMLからexeファイル...
-
コンパイル ./aと./a.out の違い
-
VC++から引数付きexeファイルの...
-
WScript.Echo と msgbox
-
コンポーネント`MSCOMM32.cox'...
-
実行ファイルと実行モジュール...
-
jarファイルとjava.exeの関連付...
-
JAVA .jarファイルに再圧縮する...
-
ネットワーク越しのEXEファ...
-
コマンドプロンプトで外のexeや...
おすすめ情報