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



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

需要考虑的两件事:

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

其次,请注意,fgetc返回一个广播给int的字符。这允许您检查EOF。如果结果不是EOF,则它是一个字符,其值从0到255(当然假设CHAR_BIT是8)。

在二进制文件中,从文件中读取的过程通常由函数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[]
....

`

您可以使用fread:进行阅读

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

参见fread

相关内容

  • 没有找到相关文章

最新更新