大家帮我瞅瞅如何修改下面代码,使其可以追加数据保证原来的数据不被覆盖

n=0;//保存的数据个数
if(num!=0)//如果采集到数据
{
CFileDialog dlg(false,"txt",_T("shuju.txt"),NULL,"Text(*.txt)|*.txt|All Files(*.*)|*.*||",NULL);
//false为保存,"txt",_T("shuju.txt")为默认打开文件名,"Text(*.txt)|*.txt|All Files(*.*)|*.*||"打开文件的类型,NULL是父类窗口

dlg.m_ofn.lpstrTitle=_T("请选择保存路径:");//可供选择的文件类型
if(dlg.DoModal()==IDOK)//如果按下确定按钮
{
    strDirFile=dlg.GetPathName();//获取所选择的文件名
    CFile file(strDirFile,CFile::modeCreate|CFile::modeReadWrite|CFile::shareExclusive);//构造文件对象,创建一个新文件,打开文件读与写,不共享;
    CArchive ar(&file,CArchive::bNoFlushOnDelete);//创建一个序列化对象ar,并与file关联起来,当归档文件析构程序被调用时,防止归档文件自动调用Flush
    UpdateData(true);//更新 
    for(int i=0;i<=num-1;i++,n++)//写入数据
    ar<<dataX[i];
    ar.Close();//把缓冲区的数据刷新后放到指定存盘
    file.Close();//关闭文件

}

}

CArchive本身不支持追加,你非要用它,你可以定义一个数组,先读取原来文件的数据到数组,然后再写回去,然后再写你新添加的数据。

http://bbs.csdn.net/topics/380130566

c++中有文件模式app,和ate可以实现。vc中考虑指针移到文件末尾输入便可以不覆盖。或者如果你有对话框的话显示文本,便不考虑这些问题