手册对这个主题并不清楚。
如果我告诉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/