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