我已经运行相同的代码很长一段时间了,今天早上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
}