我已经运行相同的代码很长一段时间了,今天早上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 ++调试器的屏幕截图。
请注意,该文件确实存在,但由于某种原因(我现在正在调查 - 决定发布此问题,然后继续查看问题是什么,因为我可能无法重现它)fopen
失败打开文件。但同样,为什么不返回NULL
?
如果这是正常行为,我应该写一下:
if (retFilePtr != NULL && retFilePtr->_ptr != NULL)
{
// do some stuff
}