トップ回答者
ファイル出力のエラーについて

質問
-
プログラミングを始めて一週間弱の初心者です。
ファイル出力に挑戦しようとプログラムを書いて実行してみたところ、ビルドに失敗してエラーが出てしまいました。
自分ではどうしようもないので、助言して下さると助かります。
よろしくお願いします。
・ソースコード
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)の部分にチェックがついて、致命的なエラーが発生しました、とでるんです。
一体どうすればいいのか見当もつきません。
どうか助けてください、お願いします。
回答
-
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)
すべての返信
-
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) -
こんにちは、kasis orange さん。
MSDN フォーラムのご利用ありがとうございます。オペレーターの山本です。
解決されてよかったですね。
なかむら さんからのアドバイスで解決されたとのことですので、回答としてマークさせていただきました。
なかむらさん、ありがとうございます。今後、同じ問題でこのスレッドを参照される方にも、参考になった情報や、解決に役立った情報がわかりやすくなるかと思いますので、有効な情報には回答としてマークすることをお願いしています。
今回は私のほうで回答としてマークさせていただきましたが、次回からは、kasis orange さんも回答としてマークしてみてくださいね。
今後とも、MSDN フォーラムのご利用をよろしくお願いいたします。それでは。
マイクロソフト株式会社 フォーラム オペレーター 山本 春海