我试图将二进制文件的内容读取为每次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