C WinAPI ReadFile在达到null时停止

C WinAPI ReadFile在达到null时停止,c,winapi,readfile,C,Winapi,Readfile,我正在尝试编写一个非常简单的win32程序。我使用CreateFile打开一个文件进行读取,然后使用ReadFile读取其内容 例如,当我在读取一个.txt文件时,它工作得很好,问题是当我正在读取的文件包含NULL时(大多数文件都是这样),ReadFile函数会停止读取,或者在达到第一个NULL时,可能会将字节写入ReadBuff。 在询问之前,我搜索并找到了两个答案 使用char array和char*:对于这个,我不知道我还可以使用什么,因为我的目标是读取文件并搜索文件扩展名。例如,如果是.

我正在尝试编写一个非常简单的win32程序。我使用CreateFile打开一个文件进行读取,然后使用ReadFile读取其内容

例如,当我在读取一个.txt文件时,它工作得很好,问题是当我正在读取的文件包含NULL时(大多数文件都是这样),ReadFile函数会停止读取,或者在达到第一个NULL时,可能会将字节写入ReadBuff。 在询问之前,我搜索并找到了两个答案

使用char array和char*:对于这个,我不知道我还可以使用什么,因为我的目标是读取文件并搜索文件扩展名。例如,如果是.gif,那么前3个字符是gif 更改DCB:这一个的问题是,我不知道DCB实际上是什么,如何更改它,以及更改其中的内容。 编辑:有相同问题的其他帖子:和

ReadFile对它读取的内容一点也不关心。它将非常高兴地读取零字节,并继续读取文件中超出该点的内容。如果它不能做到这一点,那就没有多大用处了

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

printf("%s", ReadBuffer);

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

ReadFile当然不能停止对任何字节的ReadBuff读取或写入字节。您如何知道ReadFile没有读取所有请求的字节?你需要发布一个完整的例子来说明你的错误。你把问题误诊了。错误在您试图显示数据的代码中,而不是在您读取数据的代码中。如果你提供了一份报告,这将是显而易见的。无论如何,投票结束,因为这已经被要求了十亿次。唐恩也投票反对缺乏研究。重复:即使他明确提供了长度,那仍然是错误的。二进制数据并不意味着人类可读。它将包含不可打印的字符。并非每个字节块都可以解释为人类可读的字符串。
printf("%s", ReadBuffer);