• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:fgetsの扱い方について)

fgetsの扱い方とエラー解決方法について

このQ&Aのポイント
  • C++でのfgets関数の使い方と、エラーが発生した場合の解決策について説明します。
  • プログラムの内容は、与えられたワイド文字列をマルチバイト文字列に変換して、重要単語.txtに載っている単語が変換された文字列に含まれているかを調べるものです。
  • しかし、実行すると「ハンドルされていない例外が発生しました」というエラーが出てしまいます。原因としては、fgets関数の使い方に誤りがある可能性があります。

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

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.4

>多すぎたりすると、エラーの原因になることもあるんでしょうか。。 多すぎるかどうか、というよりは、 >char str[200]; ここの200と >wcstombs_s(&wlen,str,500,input,_TRUNCATE); ここの500とが一致してなくて本当にいいんでしょうか?という話です。

fees84
質問者

お礼

500をstrの200にあわせたところ、エラーは無くなりました! 配列を宣言したときに用意したサイズ以上は指定できない、というのも考えればわかることでしたね。。 おかげで理解することが出来ました。 ありがとうございました。

その他の回答 (3)

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.3

ちょっと視点を変えてみます。 >wcstombs_s(&wlen,str,500,input,_TRUNCATE); の第3引数が500である理由を教えてください。

fees84
質問者

補足

この程度あればいいだろう という感じで、かなり適当に決めてしまいました。 多すぎたりすると、エラーの原因になることもあるんでしょうか。。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

ていうか、 >fp=fopen("重要単語.txt", "w"); >fclose(fp); この2つの文は、どうして必要なんですか? 必要である理由を説明してください。

fees84
質問者

補足

この名前でファイルを作ったとき、どのディレクトリにできるのかな?と実験的に入れてみたものです。 確認不足で消し忘れてました。すみません。 指摘された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){ ここでエラーが出ているんじゃないなぁ、と思います。

関連するQ&A

専門家に質問してみよう