我的代码如下:
       CString filename="c:\\1.txt";
CStdioFile file;
if( !file.Open(filename, CFile::modeCreate|CFile::modeWrite) )
{
    AfxMessageBox("can not open file!");
    return;
}
CString m_strbody;
m_strbody="<%\n\
Const adOpenForwardOnly = 0\n\
Const adOpenKeyset = 1\n\
Const adSingle = 4\n\
Const adErrItemNotFound = &Hcc1\n\
Const adErrObjectInCollection = &Hd27\n\
Const adSchemaProcedureColumns = 29\n\
%>";
file.SeekToEnd();
        file.WriteString(m_strbody);
        file.Close();
问题是:每次写入都将原来的覆盖掉,而不是在原来的文本后面追加记录!
怎样修改上述代码才能在文本最后一行追加记录而不会影响以前的旧数据!
谢谢!

解决方案 »

  1.   

    CFile f;
    f.Open();
    f.SeekToEnd();
    f.Write();
    f.Close();
      

  2.   

    file.Open(filename, CFile::modeCreate|CFile::modeWrite) 
    ==> 
    if(!file.Open(filename, CFile::modeWrite) )//文件不存在,打开失败
    {//创建文件
      if(!file.Open(filename, CFile::modeCreate|CFile::modeWrite) )
         return FALSE;
    }
      

  3.   

    在Open的时候加上CFile::modeNoTruncate标志,Open成功后把文件指针seek到文件尾部,,
    FT,不会看MSDN吗?
      

  4.   

    还有人竟然说出了读出所有的字符串再合并写入这样的方法!@$#%$&
      

  5.   

    我已经自己把问题解决了
    CStdioFile file;
    CString filename="1.txt";
    if( !file.Open("C:\\1\\Debug\\1.txt", CFile::modeRead|CFile::modeWrite) )
    {
    AfxMessageBox("can not open file!");
    return;
    }
    file.SeekToEnd();
    file.WriteString("eeef\n");
    file.Close();
    就改一个地方
    CFile::modeRead
      

  6.   

    如果你要用CFile::modeCreate,那么就要加上CFile::modeNoTruncate标志,
    如果你不用CFile::modeCreate而只用像你自己改的CFile::modeRead|CFile::modeWrite那么就不用CFile::modeNoTruncate。拜托以后写程序多看点MSDN,少问一些弱智问题,这样不会有长进的。