函数原型: 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) |