Chinaunix首页 | 论坛 | 博客
  • 博客访问: 523776
  • 博文数量: 118
  • 博客积分: 10028
  • 博客等级: 上将
  • 技术积分: 1820
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-07 18:46
文章分类

全部博文(118)

文章存档

2009年(12)

2008年(106)

我的朋友

分类: C/C++

2008-05-18 02:46:56





 函数原型: size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
      ptr----存放读出数据的内存首地址
      size---一块的字节数
      nmemb--块数
      stream-文件指针



 通常情况的处理:

    while(fread(buf,MAXSIZE,1,fold)>0)
    {
        fwrite(buf,MAXSIZE,1,fnew);
        bzero(buf,0);
    }



   问题:
       这样导致最后一块数据不能读,因为一般情况下最后一块都小于MAXSIZE,导致fread读失败


另一种处理:


    while((count=fread(buf,1,MAXSIZE,fold))>0)
    {
        fwrite(buf,1,count,fnew);
        if(count<MAXSIZE)
            break;
        bzero(buf,0);
    }



这样每次读MAXSIZE字节,而且返回的是字节数,同时也是块数,当返回的块数小于最大块数时,表明读到最后一块!!!



阅读(7762) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~