none
ファイル出力のエラーについて RRS feed

  • 質問

  • プログラミングを始めて一週間弱の初心者です。

    ファイル出力に挑戦しようとプログラムを書いて実行してみたところ、ビルドに失敗してエラーが出てしまいました。

    自分ではどうしようもないので、助言して下さると助かります。

    よろしくお願いします。

    ・ソースコード

    plactice.cpp

    #define _CRt_SECURE_NO_DEPRECATE
    #pragma warning(disable : 4996)

    #include<stdio.h>

    int main()
    {
     FILE *fp;

     fp = fopen("test.txt" , "w");

      if(fp = NULL){
       perror("ファイルオープンに失敗しました\n");
       return -1;
      } else {
       printf("ファイルを正常に開きました\n");
      }

      fprintf(fp , "初めてのファイル入出力です\n");

      if(fclose(fp) != 0) {
       perror("ファイルのクローズに失敗しました\n");
      } else {
       printf("ファイルを正常に閉じました\n");
      }

      return 0;
    }

    21行目のif(fclose(fp) != 0)の部分にチェックがついて、致命的なエラーが発生しました、とでるんです。

    一体どうすればいいのか見当もつきません。

    どうか助けてください、お願いします。

    2010年8月23日 16:40

回答

  •  FILE *fp;

     fp = fopen("test.txt" , "w");

      if(fp = NULL){
       perror("ファイルオープンに失敗しました\n");
       return -1;
      } else {
       printf("ファイルを正常に開きました\n");
      }

    fopen した後の if 文で if (fp = NULL) と書いてありますが、正しくは if (fp == NULL) です。書き間違いでしょうか?

    もし書き間違いじゃないとしたら、ここで fp が NULL にされてしまうため、 fclose のところでエラーになっているのかもしれません。エラーメッセージの詳細を書かれてないので、推測ですが。


    なかむら(http://d.hatena.ne.jp/griefworker)
    • 回答の候補に設定 山本春海 2010年8月25日 7:23
    • 回答としてマーク 山本春海 2010年9月1日 8:12
    2010年8月23日 20:28

すべての返信

  •  FILE *fp;

     fp = fopen("test.txt" , "w");

      if(fp = NULL){
       perror("ファイルオープンに失敗しました\n");
       return -1;
      } else {
       printf("ファイルを正常に開きました\n");
      }

    fopen した後の if 文で if (fp = NULL) と書いてありますが、正しくは if (fp == NULL) です。書き間違いでしょうか?

    もし書き間違いじゃないとしたら、ここで fp が NULL にされてしまうため、 fclose のところでエラーになっているのかもしれません。エラーメッセージの詳細を書かれてないので、推測ですが。


    なかむら(http://d.hatena.ne.jp/griefworker)
    • 回答の候補に設定 山本春海 2010年8月25日 7:23
    • 回答としてマーク 山本春海 2010年9月1日 8:12
    2010年8月23日 20:28
  • 質問した者です。

    ご指摘いただいたところを直してビルドしてみたところ、無事解決しました。やはり単なる書き間違いだったようです。

    返信していただき、本当にありがとうございます。

    2010年8月24日 5:15
  • こんにちは、kasis orange さん。

    MSDN フォーラムのご利用ありがとうございます。オペレーターの山本です。

    解決されてよかったですね。
    なかむら さんからのアドバイスで解決されたとのことですので、回答としてマークさせていただきました。
    なかむらさん、ありがとうございます。

    今後、同じ問題でこのスレッドを参照される方にも、参考になった情報や、解決に役立った情報がわかりやすくなるかと思いますので、有効な情報には回答としてマークすることをお願いしています。
    今回は私のほうで回答としてマークさせていただきましたが、次回からは、kasis orange さんも回答としてマークしてみてくださいね。

    今後とも、MSDN フォーラムのご利用をよろしくお願いいたします。それでは。
                                                
    マイクロソフト株式会社 フォーラム オペレーター 山本 春海

    2010年9月1日 8:18