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

标签 c file binary

<分区>

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

相关文章:

C:查找函数名称时出现段错误(核心已转储)

复制 C 文件以包含

java - 告诉 .jar 文件在桌面上而不是在其自身内创建文件 (java) (mac)

python - 将list的元素写入文件

java - 当读取文件试图确定有效成绩时,为什么文件读取器会跳行?

Java RandomAccessFile setLength 但用于二进制文件的开头

c - 我不明白什么是 %[^\n]

c++ - 在 C/C++ 中将 ISO-8859-1 字符串转换为 UTF-8

linux通过完整路径执行二进制文件

python - 如何在 Python 中高效地生成 M 个随机二进制数组?