- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:fgetsの扱い方について)
fgetsの扱い方とエラー解決方法について
このQ&Aのポイント
- C++でのfgets関数の使い方と、エラーが発生した場合の解決策について説明します。
- プログラムの内容は、与えられたワイド文字列をマルチバイト文字列に変換して、重要単語.txtに載っている単語が変換された文字列に含まれているかを調べるものです。
- しかし、実行すると「ハンドルされていない例外が発生しました」というエラーが出てしまいます。原因としては、fgets関数の使い方に誤りがある可能性があります。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>多すぎたりすると、エラーの原因になることもあるんでしょうか。。 多すぎるかどうか、というよりは、 >char str[200]; ここの200と >wcstombs_s(&wlen,str,500,input,_TRUNCATE); ここの500とが一致してなくて本当にいいんでしょうか?という話です。
その他の回答 (3)
- asuncion
- ベストアンサー率33% (2127/6289)
回答No.3
ちょっと視点を変えてみます。 >wcstombs_s(&wlen,str,500,input,_TRUNCATE); の第3引数が500である理由を教えてください。
質問者
補足
この程度あればいいだろう という感じで、かなり適当に決めてしまいました。 多すぎたりすると、エラーの原因になることもあるんでしょうか。。
- asuncion
- ベストアンサー率33% (2127/6289)
回答No.2
ていうか、 >fp=fopen("重要単語.txt", "w"); >fclose(fp); この2つの文は、どうして必要なんですか? 必要である理由を説明してください。
質問者
補足
この名前でファイルを作ったとき、どのディレクトリにできるのかな?と実験的に入れてみたものです。 確認不足で消し忘れてました。すみません。 指摘された2行を消して実行してみましたが、結果は同じでした。
- asuncion
- ベストアンサー率33% (2127/6289)
回答No.1
>fp=fopen("重要単語.txt", "w"); >fclose(fp); この瞬間に、"重要単語.txt"は中身が空っぽになります。 中身が空っぽでもファイルそのものは存在していますので、 >if( (fp=fopen("重要単語.txt", "r")) ==NULL){ 読み込むためのオープンはできます。しかし、中身が空っぽなので、 >while(fgets(word,50,fp)!=NULL){ ここでエラーが出ているんじゃないなぁ、と思います。
お礼
500をstrの200にあわせたところ、エラーは無くなりました! 配列を宣言したときに用意したサイズ以上は指定できない、というのも考えればわかることでしたね。。 おかげで理解することが出来ました。 ありがとうございました。