C:fread函数返回0

时间:2012-03-12 17:48:51

标签: c fread

...
rewind(ftmpname);
if (stat(tmpname, &st_file)==-1) 
    longjmp(Berror, (ETMPSTAT) );

tmpsize = st_file.st_size;
i = 0;

while (i<tmpsize)
{
    n = fread(buf, 1, (READ_CONST), ftmpname );     
    write_byte(farch, buf, n);
    i+=n;
}
...

fread总是返回0.我不知道出了什么问题。我以前做过倒带,但没有帮助。抱歉我的英文。

1 个答案:

答案 0 :(得分:2)

如果你不知道什么是错的,你必须检查错误。以下是手册页的内容:

  

返回值

     

fread()和fwrite()返回成功读取或写入的项目数      (即,不是字符数)。如果发生错误,或文件结束      到达时,返回值是短项目计数(或零)。

     

fread()不区分文件结束和错误,并且调用者必须使用      feof(3)和ferror(3)确定发生了什么。

那你为什么不用那些能告诉你究竟出了什么问题的函数呢?