fread参数分析

尽管这个问题很简单,而且百度百科也都能找到解释。但还是觉得有问题

函数原型:size_t fread ( void *buffer, size_t size, size_t count, FILE *stream) ;

百度百科上给出的例子 fread(buf,strlen(msg)+1,1,stream);即第三个参数为1,第二个参数为一个大小。

个人实验了一下。

while(feof(fd)==0)
{
len=fread(buf,1,sizeof(buf),fd);
debug_blue("--------------%d\n",len);
count+=len;
}

当第二个参数为1,读取sizeof(buf)个字节。能正常读取完文件。



而当len=fread(buf,sizeof(buf),1,fd);

while(feof(fd)==0)
{
len=fread(buf,1,sizeof(buf),fd);
debug_blue("--------------%d\n",len);
count+=len;
}

即第三个参数为1时,除了当第二个参数也为1时,结果正确。其余都读取不完。就算能读取完,效率也是非常低的。文件多大就需要循环多少次。


所以当用的fread函数时,尽量用 len=fread(buf,1,sizeof(buf),fd);这种形式,不会出错,而且效率高

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值