0

我正在尝试打开位于目录中的文件。如果长度大于或等于 127,则始终返回错误代码 13。

char name[200]="E:\\suri_temp\\abc85\\tool\\src1111\\turi_temp\\abc85\\tool\\src1111\\puri_temp\\abc85\\tool\\src\\nuri_temp\\abc85\\to\\abcd.tmp\\suri1111.log";

int len = strlen(name); //len=127

HFILE handle ;
WORD temp;
OFSTRUCT ofstruct;

if( (handle = OpenFile(name, &ofstruct, OF_EXIST))  ==  HFILE_ERROR )
{
    temp = GetLastError(); // if length 127 or above(it comes here temp = 13)
}
else
_lclose(handle); // if length is below 127 it comes here

有人遇到过这个问题吗?

4

2 回答 2

3

您只是发现了OpenFile的MSDN 文章中详细记录的内容:

注意 此功能功能有限,不推荐使用。对于新的应用程序开发,请使用 CreateFile 函数。

OFSTRUCT 结构包含一个路径字符串成员,其长度限制为 OFS_MAXPATHNAME 字符,即 128 个字符。因此,您不能使用 OpenFile 函数打开路径长度超过 128 个字符的文件。CreateFile 函数没有此路径长度限制。

如前所述,请改用 CreateFile()。

于 2013-01-06T19:28:38.290 回答
0

使用

OpenFile(name, &ofstruct, OF_EXIST)) 

在调试模式下可以,但在发布模式下失败。利用

if(GetFileAttributes("filename") == -1)
于 2013-01-06T18:51:09.260 回答