C中的二进制文件读取操作?

时间:2016-07-27 18:26:04

标签: c file binary

我试图将二进制文件的内容每次读取为一组n个字节,并将它们放在字符缓冲区中并对缓冲区执行一些操作。对于下一次迭代,我必须从文件中读取下一个n个字节并将其放在缓冲区中,依此类推,直到文件结束。我可以使用普通文本文件使用getc(fp)来做同样的事情。但是对于二进制文件,getc()在读取文件的全部内容之前遇到EOF。如何在C中使用二进制文件实现它?

3 个答案:

答案 0 :(得分:3)

需要考虑两件事:

首先,在打开二进制文件以便使用fopen进行阅读时,请使用模式"rb"。这将以二进制模式打开文件,因此不会对某些字符进行特殊处理。请注意,在Linux上这并不重要,但在Windows上确实如此。

其次,请注意fgetc会返回投放到int的字符。这允许您检查EOF。如果结果不是EOF,则字符的值将为0到255(当然假设CHAR_BIT为8)。

答案 1 :(得分:1)

在二进制文件中,从文件读取的过程通常由函数fread完成。除此之外,如果要将过程迭代到文件末尾。您可以使用while

while(!feof(fp)) // still not read to the end of file yet
if (fread(buffer, sizeof(...),1,fp)==1) //put single variable to the array[]
....

`

答案 2 :(得分:0)

您可以使用fread阅读:

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

请参阅fread