c - fread 到达 eof 时的缓冲区条件

标签 c

手册对这个主题并不清楚。

如果我告诉fread()从文件 1024 中读取 1 项每次字节(在循环中),最后一个 block 是 size < 1024 ,我知道fread()将返回0 .

但是,缓冲区会包含剩余部分吗?

最佳答案

标准说:

7.21.8.1 The fread function

If a partial element is read, its value is indeterminate.

本例中的元素大小为 1024 字节,您读取了一个元素。 该元素(整个 1024 字节 block )将具有不确定的值。读取该值可能会导致未定义的行为。

还有:

The fread function returns the number of elements successfully read, which may be less than nmemb if a read error or end-of-file is encountered.

如果返回值为 0,则成功读取了零个元素,这是元素未正确读取的另一个指示,并且不应使用,如前所述。

关于c - fread 到达 eof 时的缓冲区条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34679574/

相关文章:

c - Lua 用户数据数组访问和方法

c - fptd 0.17 和目录访问

c - 如何在库代码中分配和维护内存?

c - 从 32 位寄存器读入 16 位

c - 在C中用另一个字符串替换字符串的一部分

c - 如果结构仅包含字节数组,则 `#pragma pack(1)` 有风险/危险

c - avr中的内联汇编

c - 带字符串名称的 B+Tree 结构

c - Borland C 5.5 编译器不工作

c - SW 浮点实现的方法有哪些?