WinAPI ReadFile 在到达 null 时停止
WinAPI ReadFile stops when reaching null
我正在尝试编写一个非常简单的 win32 程序。我使用 CreateFile() 打开一个文件进行读取,然后使用 ReadFile()
读取它的内容
HANDLE hfile=CreatFileW(L"Capturejpg.jpg", GENERIC_READ, 0,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL);
bReadResult=ReadFile(hFile, ReadBuff, BUFFERSIZE-1, &dwBytes, &OL);
例如,当我正在读取 .txt 文件时,这工作得很好,问题是当我正在读取的文件包含 NULL(大多数文件都是这种情况)然后 ReadFile 函数在到达第一个 NULL 时停止读取(或者可能将字节写入 ReadBuff
)。
在询问之前我搜索并找到了两个答案。
- 使用 char 数组和 char * 以外的东西:为此,我不知道我还能使用什么,因为我的目标是读取文件并搜索文件扩展名(例如,如果它是 .gif,则前 3 个字符为 "Gif")
- 更改DCB:这个的问题是我不知道DCB到底是什么,如何更改它,以及更改其中的内容。
编辑: 其他有相同问题的帖子:this one and this one
ReadFile
一点也不关心它读取的内容。它会非常愉快地读取零字节并继续读取文件中的那个点之后。做不到这一点也没用。
您刚刚误诊了问题。你读入了一个字符数组 ReadBuffer
然后像这样打印:
printf("%s", ReadBuffer);
现在,printf
确实会在到达零字节时停止。您将需要找到一些其他方式来输出此文件的内容。
我正在尝试编写一个非常简单的 win32 程序。我使用 CreateFile() 打开一个文件进行读取,然后使用 ReadFile()
读取它的内容HANDLE hfile=CreatFileW(L"Capturejpg.jpg", GENERIC_READ, 0,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL);
bReadResult=ReadFile(hFile, ReadBuff, BUFFERSIZE-1, &dwBytes, &OL);
例如,当我正在读取 .txt 文件时,这工作得很好,问题是当我正在读取的文件包含 NULL(大多数文件都是这种情况)然后 ReadFile 函数在到达第一个 NULL 时停止读取(或者可能将字节写入 ReadBuff
)。
在询问之前我搜索并找到了两个答案。
- 使用 char 数组和 char * 以外的东西:为此,我不知道我还能使用什么,因为我的目标是读取文件并搜索文件扩展名(例如,如果它是 .gif,则前 3 个字符为 "Gif")
- 更改DCB:这个的问题是我不知道DCB到底是什么,如何更改它,以及更改其中的内容。
编辑: 其他有相同问题的帖子:this one and this one
ReadFile
一点也不关心它读取的内容。它会非常愉快地读取零字节并继续读取文件中的那个点之后。做不到这一点也没用。
您刚刚误诊了问题。你读入了一个字符数组 ReadBuffer
然后像这样打印:
printf("%s", ReadBuffer);
现在,printf
确实会在到达零字节时停止。您将需要找到一些其他方式来输出此文件的内容。