Chinaunix首页 | 论坛 | 博客
  • 博客访问: 543061
  • 博文数量: 493
  • 博客积分: 2891
  • 博客等级: 少校
  • 技术积分: 4960
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-17 17:11
文章分类

全部博文(493)

文章存档

2010年(493)

分类:

2010-05-12 18:46:20

           ulBufWrite += ulThisWrite;
        } while (ulBufRead -= ulThisWrite);
    }
    ::fclose(fsrc);
    ::fclose(fdst);
    return true;
}
fopen、fclose函数应该不会有问题。问题应该出在关键的fread与fwrite函数上。查看fread与fwrite的说明文档,如下:
SYNOPSIS
     #include
     size_t fread(void *ptr, size_t  size,  size_t  nitems,  FILE
     *stream);
     size_t fwrite(const void *ptr, size_t size,  size_t  nitems,
     FILE *stream);
DESCRIPTION
     The fread() function reads into an array pointed to  by  ptr
     up  to  nitems  items  of data from stream, where an item of
     data is a sequence of bytes (not necessarily terminated by a
     null  byte)  of  length  size.  It stops reading bytes if an
     end-of-file or error condition is encountered while  reading
     stream, or if nitems items have been read. It increments the
     data pointer in stream to point to the  byte  following  the
     last  byte read if there is one. It does not change the con-
     tents of stream. It returns the number of items read.
     The fwrite() function writes to the named output  stream  at
     most  nitems items of data from the array pointed to by ptr,
     where an item of data is a sequence  of  bytes  (not  neces-
     sarily  terminated  by a null byte) of length size. It stops
     writing when it has written nitems items of data  or  if  an
     error condition is encountered on stream. It does not change
     the contents of the array pointed to by ptr.  It  increments
     the  data  pointer  in stream by the number of bytes written
     and returns the number of items written.
读出或写入的内容由两个参数决定,一个是元素大小,一个是元素个数,读出或写入的总字节数就是元素大小乘以元素个数的积,但是这两个函数的返回值,不是读出或写入的总字节数,而是读出或写入的元素个数。这就是复制发生错误的根本原因所在。
阅读(169) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~