读一个文档在加cstring写入另一个文档

问题描述:

void C加字符到txtDlg::OnBnClickedButton4()
{
CString str;
try
{
CFile file1(_T("D:\11\1.txt"), CFile::modeRead);
DWORD txtSize = (DWORD)file1.GetLength();
char* buf = new char[txtSize + 1];
memset(buf, 0, sizeof(char)* (txtSize + 1));
file1.Read(buf, txtSize);

           str = CString(buf);
           delete[] buf;
           buf = NULL;
           file1.Close();
        }
        catch (CException* e)
        {
           e->ReportError();
           e->Delete();
        }
        MessageBox(str); //能读取
        try
        {
           CFile   f(_T("D:\\11\\0.txt"), CFile::modeCreate | CFile::modeWrite | CFile::modeNoTruncate);
           f.SeekToEnd();
           CString a =_T("D:\\11\\0.txt ")+ str; //但无法写入
           f.Write(a, a.GetLength() * sizeof(TCHAR));
           f.Close();
        }
        catch (CException* e)
        {
           e->ReportError();
           e->Delete();
        }

}

那也应该是strcat(buf, (char *)str);
你追加的是文件名而不是文件内容

你想做什么,看上去你想追加文本到文本文件,但是你以只读模式打开的文件,但个案没法写入。

你的CString默认是不是unicode的。读取的是char字符串。两个相加会不正确。

用strcat函数看看,我之前说了

CString a =_T("D:\11\0.txt ")+CString.Format(”%s”,str); //试试

1 不能直接将 CString 内容写入文件,一般需要调用其 GetBuffer 的方法获取得内容再写入
2 工程中 CString 是 Unicode,还是 ANSII,要看工程的属性
3 写入文件的内容 buf 的数据一直没有变化,但却去修改文件名的字符串:CString a =_T("D:\11\0.txt ")+ str; //但无法写入

这段代码的问题还是比较多,建议进行代码功能确认与调试来实现功能。

代码就输入路径问题 误打误撞加入似乎_CRT_SECURE_NO_WARNINGS就没有问题了 还是谢谢各位的热心回答。 为大家点赞 ~~~