小编voi*_*oid的帖子

为什么fopen无法打开存在的文件?

我在Windows XP上使用Visual Studio 6(是的,我知道它已经老了)构建/维护C++ DLL.我遇到了fopen无法打开现有文件的问题,它总是返回NULL.

我试过了:

  • 通过将两者都设置为零然后再次检查它们来检查errno和_doserrno,两者都保持为零,因此GetLastError()报告没有错误.我知道fopen在遇到根据C标准的错误时不需要设置errno.
  • 硬编码文件路径,这不是相对的.
  • 尝试了另一台开发者机器,结果相同.

真正奇怪的是CreateFile工作,可以使用ReadFile读取文件.我们相信这适用于发布版本,但是我们也在应用程序的其他方面看到了一些非常奇怪的行为,我们不确定这是否相关.

代码在下面,我没有看到任何奇怪的东西,它看起来很标准我.源文件在短短半年内没有改变.

HRESULT CDataHandler::LoadFile( CStdString szFilePath )
{
    //Code
    FILE* pFile;
    if ( NULL == ( pFile = fopen( szFilePath.c_str(), "rb") ) )
    {
        return S_FALSE;
    }
    //More code
}
Run Code Online (Sandbox Code Playgroud)

c++ windows file-io fopen visual-c++-6

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

c++ ×1

file-io ×1

fopen ×1

visual-c++-6 ×1

windows ×1