复制文件时,由于以缓冲区为单位复制,一般目的文件总比源文件多一些字节.高手过来看看!该怎么解决

复制文件时,由于以缓冲区为单位复制,一般目的文件总比源文件多一些字节.高手过来看看!
复制文件时,由于以缓冲区为单位复制,一般目的文件总比源文件多一些字节.高手过来看看!谢谢!

        if((fpSrc=fopen(m_oldPathName, "rb "))==NULL)
        {
  AfxMessageBox( "不能打开源文件! ");
  return;
        }
        if((fpDest=fopen(m_newPathName, "wb+ "))==NULL)
        {
  AfxMessageBox( "不能建立新文件! ");
  return;
        }
        do
        {
    memset(&bBuff,   0,   SIZE);
                fread(&bBuff,   SIZE,   1,   fpSrc   );
                fwrite(   &bBuff,   SIZE,   1,   fpDest   );
          }   while(   !feof(fpSrc)   );
 
          fclose(fpSrc);
          fclose(fpDest);

------解决方案--------------------
1. 用法不对:
iCnt=fread(&bBuff, SIZE, 1, fpSrc );//fread函数要是能返回实际读入的字节数就好解决
改为
iCnt=fread(&bBuff, 1, SIZE, fpSrc );
即可以实现返回实际读入的字节数

2. ReadFile 与 fread 在Windows 平台上,效率差不多, fread 最终也会转换为 ReadFile 的调用