2

我已经运行相同的代码很长一段时间了,今天早上fopen失败了。我有一个简单的检查,如果返回的指针fopenNULL我得出的结论是文件没有按照这里的描述成功打开:http: //msdn.microsoft.com/en-us/library/yeby3zcb (v=vs.90 ).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