• 締切済み

fopen() がたまにNULLを返す

fopen() がたまに失敗します。 GetLastError() は、0を受けます。 昔、fopen() が失敗する場合についてのサイトを見たような記憶があるんだけど fopen() についていい情報があったら教えて下さい。 fopen() だけをするというシンプルなソースではそのようなエラーは 起きていません。エラーが発生するソースの他の部分に原因があるというのが 一番可能性がありそうなんだけど、原因がなかなか分かりません。

みんなの回答

  • MovingWalk
  • ベストアンサー率43% (2233/5098)
回答No.3

>fopen() がたまに失敗します。 当然ですが、エラーが発生すればNULLが返ります。 エラーの原因は、指定したオープンモードでオープンで きないからです。 http://www.bohyoh.com/CandCPP/C/Library/fopen.html 標準関数ですから、エラーの情報はerrnoで見てください。 但し、fopen()の直後にチェックしなければ正しい値は取得できません。

noname#4252
noname#4252
回答No.2

fopen() は Win32 API ではないので、 エラーを調べるなら GetLastError() ではなく errno ですね。

  • asuca
  • ベストアンサー率47% (11786/24626)
回答No.1

fopenは指定されたファイルをオープンしストリームを結びつけますがそのオープンに失敗したときはNULLを返すようになっていますよ。 つまりNULLが返されたかどうかを判断してファイルのオープンに成功したかどうかを判断できるようになっているんです。 NULLを返すのはごくふつうのことなんですが。ファイルがないとかオープンできない状態だったらNULLを返してくれないと判断できませんので。 それとソースがわからなければ原因なんかわかりません。

関連するQ&A