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引起的,但是想实现上面说的效果,求解决方法! 展开
{
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引起的,但是想实现上面说的效果,求解决方法! 展开
3个回答
展开全部
我也不喜欢用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);
}
......
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不要用CFile,用c的FILE*效率最好而且最简单
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你写的没有错!不会覆盖原有的数据啊给文件加上换行符就明显了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询