2

私はかなり長い間同じコードを実行してきましたが、今朝fopenは失敗しました。fopenここで返されたポインターが次のとおりである場合NULL、ファイルが正常に開かれなかったと結論付ける簡単なチェックがあります。 .aspx

プロジェクトの呼び出しコード:

return fopen(a_fileName, "r"); // expected return to be NULL if the file can't be opened

この時点で確認できerrnoますが、コードはクロスプラットフォームであるため、信頼できるかどうかはわかりませんerrno。しかし、元の問題に戻りますが、なぜ戻ってfopen こないNULLのでしょうか? 以下のVisual C++ デバッガーのスクリーンショットを参照してください。

ここに画像の説明を入力

ファイルは実際には存在しますが、何らかの理由で (現在調査中です - 再現できない可能性があるため、問題を確認する前にこの質問を投稿することにしました) fopen、ファイルを開くことができないことに注意してください。しかし、繰り返しになりますが、なぜ返されないのNULLでしょうか?

これが通常の動作である場合、次のように書く必要があります。

if (retFilePtr != NULL && retFilePtr->_ptr != NULL) 
{
  // do some stuff
}
4

0 に答える 0