复制文件时,由于以缓冲区为单位复制,一般目的文件总比源文件多一些字节.高手过来看看!该怎么解决
复制文件时,由于以缓冲区为单位复制,一般目的文件总比源文件多一些字节.高手过来看看!
复制文件时,由于以缓冲区为单位复制,一般目的文件总比源文件多一些字节.高手过来看看!谢谢!
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 的调用
复制文件时,由于以缓冲区为单位复制,一般目的文件总比源文件多一些字节.高手过来看看!谢谢!
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 的调用