<分区>
我试图每次读取一个二进制文件的内容作为一组 n 个字节,并将它们放在一个字符缓冲区中,并对缓冲区进行一些操作。对于下一次迭代,我必须从文件中读取接下来的 n 个字节并将其放入缓冲区中,依此类推,直到文件末尾。我可以对普通文本文件使用 getc(fp) 来做同样的事情。但是对于二进制文件,getc() 在读取文件的全部内容之前会遇到 EOF。我怎样才能用 C 中的二进制文件实现它?
<分区>
我试图每次读取一个二进制文件的内容作为一组 n 个字节,并将它们放在一个字符缓冲区中,并对缓冲区进行一些操作。对于下一次迭代,我必须从文件中读取接下来的 n 个字节并将其放入缓冲区中,依此类推,直到文件末尾。我可以对普通文本文件使用 getc(fp) 来做同样的事情。但是对于二进制文件,getc() 在读取文件的全部内容之前会遇到 EOF。我怎样才能用 C 中的二进制文件实现它?
最佳答案
需要考虑的两件事:
首先,当用fopen
打开二进制文件进行读取时,使用模式"rb"
。这将以二进制模式打开文件,因此不会对某些字符进行特殊处理。请注意,在 Linux 上这无关紧要,但在 Windows 上却很重要。
其次,请注意 fgetc
返回转换为 int
的字符。这允许您检查 EOF
。如果结果不是 EOF
,则它是一个字符,其值介于 0 到 255 之间(当然假设 CHAR_BIT
为 8)。
关于c - C中的二进制文件读取操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38620560/