MFC CFile写文件问题

for(inti=0;i<10;i++){CFilem_file("D:/Data.dat",CFile::modeCreate|CFile::modeNoTruncat... for (int i = 0; i<10; i++)
{
CFile m_file("D:/Data.dat", CFile::modeCreate | CFile::modeNoTruncate | CFile::modeWrite);
m_file.SeekToEnd();
m_file.Write(Z,10*sizeof(short));
m_file.Close();
}
Z是已知的数组,文件的创建在程序中必须放在循环里,希望的效果是 连续往文件里写十次,现在的问题是每次后一次都把前一次写的覆盖了,是由于CFile::modeNoTruncate引起的,但是想实现上面说的效果,求解决方法!
展开
 我来答
百度网友af542ed
2013-04-28 · TA获得超过469个赞
知道小有建树答主
回答量:266
采纳率:75%
帮助的人:172万
展开全部

我也不喜欢用CFile,给你一段类似的代码,你稍微改下就可以了

.......
{
FILE * fp;
CString filename="out.dat";
fp=fopen(filename,"a");
for (int i=0;i<5;i++)
{
fprintf(fp,"%d ",i);
}
fprintf(fp,"\n");
fclose(fp);
}
......

每次写文件不会擦除之前的数据,就是说这个程序你运行3次,得到.dat文件里的结果

0 1 2 3 4

0 1 2 3 4

0 1 2 3 4

追问
创建和打开在循环的外面,我想要的是在里面,同时我想以二进制的形式写
追答
那段代码只是让你参考下FILE的用法,这样写吧
......
for(int i=0;i<10;i++)
{
//文件的创建要放在循环里面
FILE * fp;
CString filename="out.dat";根据需要改路径
fp=fopen(filename,"a");
//fprintf(fp,"%d ",i); 这个输出的是十进制的i
fwrite(&i,sizeof(double),1,fp);//手里没有编译器,这一行没试过
//fprintf(fp,"\n"); 输出回车
fclose(fp);
}
......
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
相思丶猫2C
2013-04-28 · TA获得超过1198个赞
知道小有建树答主
回答量:1432
采纳率:50%
帮助的人:948万
展开全部
不要用CFile,用c的FILE*效率最好而且最简单
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小至_1
2013-04-28 · TA获得超过385个赞
知道答主
回答量:38
采纳率:100%
帮助的人:29.1万
展开全部
你写的没有错!不会覆盖原有的数据啊给文件加上换行符就明显了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式