当fread击中eof时的缓冲条件

时间:2016-01-08 14:38:58

标签: c

关于这个问题,手册并不清楚。

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

但是,缓冲区是否包含余数?

1 个答案:

答案 0 :(得分:3)

标准说:

  

7.21.8.1 fread函数

     

如果读取了部分元素,则其值是不确定的。

这种情况下的元素大小为1024字节,您可以读取一个元素。 该元素(1024字节的整个块)将具有不确定的值。读取该值可能会导致未定义的行为。

  

fread函数返回成功读取的元素数,可能是   如果遇到读错误或文件结束,则小于nmemb。

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