-

- 加为好友
- 发送私信
- 在线聊天
devoc
- 等级:

- 可用分等级:
- 总技术分:
- 总技术分排名:
|
| 发表于:2008-08-24 12:53:139楼 得分:0 |
谢谢jszj ,cnzdgs 做出来了,说下我的流程吧,也给做这方面的朋友一个帮助。 pvFileO是文件映射后的文件首址指针,hyFile是带写入的文件,需wb+打开。 nFileLen是一个小于这个文件一半大小的随机数 - C/C++ code
{//大循环,对每个文件处理
int nSeg=nSize/nFileLen; //取段长为nFileLen的段数
int nlSeg=(nSize%nFileLen!=0)?(nSize%nFileLen):0; //取结尾一段的长度
char *hydata=new char[nFileLen];
for(int t=0; t<nSeg; t++)
{
//处理完整的段...
memcpy(hydata,pvFileO,nFileLen);
fwrite(pvFileO,nFileLen,1,hyFile);
pvFile+=nFileLen; //完整的段都要加段长
}
if (nlSeg!=0) //最后一段如果小于分隔段
{
//处理最后一段...
memcpy(hydata,pvFileO,nlSeg);
fwrite(hydata,nlSeg,1,hyFile);
}
delete[] hydata;
}
如果这样处理,文件数大过5个时会出错,就是上面说的那种错误,不知道为什么,因为我后面也delete了申请的hydata啊。 - C/C++ code
{//大循环,对每个文件处理
int nSeg=nSize/nFileLen; //取段长为nFileLen的段数
int nlSeg=(nSize%nFileLen!=0)?(nSize%nFileLen):0; //取结尾一段的长度
char *hydata=new char[nFileLen];
for(int t=0; t<nSeg; t++)
{
//处理完整的段...
fwrite(pvFileO,nFileLen,1,hyFile);
pvFile+=nFileLen; //完整的段都要加段长
}
if (nlSeg!=0) //最后一段如果小于分隔段
{
//处理最后一段...
fwrite(pvFileO,nlSeg,1,hyFile);
}
}
这样就没问题了。 | | |
修改
删除
举报
引用
回复
| |