WinAPI ReadFile在达到null

时间:2018-03-13 11:48:11

标签: c winapi readfile

我正在尝试编写一个非常简单的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)。 在询问我之前,找到了两个答案。

  1. 使用其他char数组和char * :为此,我不知道还能使用什么,因为我的目标是读取文件并搜索文件扩展名(例如,如果是.gif然后读取前3个字符" Gif")
  2. 更改DCB :这个问题是我不知道DCB究竟是什么,如何更改它,以及更改其中的内容。
  3. 编辑:其他有同样问题的帖子:this onethis one

1 个答案:

答案 0 :(得分:1)

ReadFile并不关心它所读取的内容。它会非常愉快地读取零字节并继续读取文件中的那一点。如果它不能那样做就没有多大用处。

你刚才误解了这个问题。您已读入字符数组ReadBuffer,然后打印如下:

printf("%s", ReadBuffer);

现在,printf确实会在达到零字节时停止。您需要找到一些其他方法来输出此文件的内容。