尽管这个问题很简单,而且百度百科也都能找到解释。但还是觉得有问题
函数原型: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);这种形式,不会出错,而且效率高
本文探讨了fread函数的不同参数设置对于文件读取的影响。通过对比两种常见使用方式,指出当第二个参数设为1时,读取效率更高且不易出错。
489

被折叠的 条评论
为什么被折叠?



