循环读取文件

banmiton 2010-01-08 09:34:35
while (feof(fp)==0)
{
while (iSize<(4096*BLOCK))
{
memset(buff,0,sizeof(buff));
int len = fread(buff, 10*BLOCK, 1, fp);
ret = WriteFile(hDev,buff,len, &dwCB,NULL);//写如某文件hDev
if (!ret)
{
fclose(fp);
return;
}
iSize+=1024*10;
}
}
从打开的文件fp中,每次读取10K,直到读取文件完毕,文件最大为4096K,BLOCK=1024字节,请问这样写有问题吗?如何判断读到文件尾部,或者是文件出错?
...全文
97 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
苍蝇①号 2010-01-08
  • 打赏
  • 举报
回复
也可以开始读之前获得文件长度,把已经读的加起来如果小于文件长度就说明还能继续读下去,否则结束
xuzhuo2000 2010-01-08
  • 打赏
  • 举报
回复
fread返回值的判断
wesleyluo 2010-01-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wuyu637 的回复:]
fread返回值小于你每次要读的长度,或者返回值为0,就是到文件尾了
[/Quote]
同意。
macrojj 2010-01-08
  • 打赏
  • 举报
回复
You can use feof() or ferror() to figure out if an error occurs.


用ferror()吧
tanmeining 2010-01-08
  • 打赏
  • 举报
回复

int len = fread(buff, 10*BLOCK, 1, fp);
后应该加上判断,是否read失败
wuyu637 2010-01-08
  • 打赏
  • 举报
回复
fread返回值小于你每次要读的长度,或者返回值为0,就是到文件尾了
pady_pady 2010-01-08
  • 打赏
  • 举报
回复
feof()

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧