C中最后一个fread()中的信息大小

时间:2014-02-09 04:53:25

标签: c fread

#define MAXSIZE 256

fread(buff, sizeof(MAXSIZE), 1, infp);

最多说我们需要阅读3次,阅读2次后,infp中剩余的内容小于MAXSIZE。我们如何确定上次阅读时的信息大小?

2 个答案:

答案 0 :(得分:5)

您只需检查fread()的返回值:

  

返回值

     

成功读取的对象数,如果出现错误或文件结束条件,则可能少于计数。

像这样:

size_t num = fread(...);

P.S。:,如@chux所述,您实际上需要使用fread(buff, MAXSIZE, 1, infp)

答案 1 :(得分:1)

来自fread手册页

  

成功时,fread()和fwrite()返回读取或写入的项目数。此数字等于仅在大小为1时传输的字节数。如果发生错误或达到文件末尾,则返回值为短项目计数(或零)。   fread()不区分文件结束和错误,并且调用者必须使用feof(3)和ferror(3)来确定发生了什么。

Man fread