`fopen`不返回NULL但也没有打开文件

时间:2013-10-30 15:36:04

标签: c io

我已经运行相同的代码很长一段时间了,今天早上fopen失败了。我有一个简单的检查,如果fopen返回的指针是NULL,我会根据此处的描述得出文件没有成功打开: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 ++调试器的屏幕截图。

enter image description here

请注意,该文件确实存在,但由于某种原因(我现在正在调查 - 决定发布此问题,然后继续查看问题是什么,因为我可能无法重现它)fopen失败打开文件。但同样,为什么不返回NULL

如果这是正常行为,我应该写一下:

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

0 个答案:

没有答案