怎么在文件中替换一行数据

如何在文件中替换一行数据
比如test.txt中有如下数据:
aaaaaa
111111
3333333

如何实现将改txt中的111111读取出来修改成222222
然后再写入test.txt中,结果为:
aaaaaa
222222
3333333
读出来是比较容易,我可以一行一行的读,可是写入该如何处理??

用fwrite CFile 或者CStdioFile实现?

------解决方案--------------------
你可以读出文件内容,替换后写入新文件,然后删除原文件,再改名

方法不太好,可能有更简单的方法直接修改文件中一段内容


VC++中文本文件替换的函数:

例如把trap.log文件中的123替换成***,使用方法如下所示

ReplaceText(“.\\trap.log“,”123“,”***");

int ReplaceText(CString StrFileName,CString StrFind,CString StrReplace)
{
CStdioFile TempFile,File;
int Count=0;
if(!File.Open(StrFileName,CFile::modeRead))
return -1;
CString StrTempFileName=File.GetFileTitle()+".tmp";
if(!TempFile.Open(StrTempFileName,CFile::modeCreate|CFile::modeReadWrite))
return -1;
CString Str;
while(File.ReadString(Str))
{
Count+=Str.Replace(StrFind,StrReplace);
TempFile.WriteString(Str+"\n");
}
File.Close();
TempFile.Close();
CFile::Remove(StrFileName);
CFile::Rename(StrTempFileName,StrFileName);
return Count;
}

------解决方案--------------------
C/C++ code

// VS2008 win32 console application,support MFC

#include "stdafx.h"

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
    try
    {
        CStdioFile file;
        LPCTSTR pszFile = _T("F:\\11.txt");
        file.Open(pszFile, CFile::modeRead);
        CString strText;
        DWORD dwPos = 0;
        LPCTSTR pszSrc = _T("111111");
        LPCTSTR pszDes = _T("222222\n");
        while(file.ReadString(strText))
        {
            if(strText == pszSrc)
            {
                dwPos = (DWORD)file.GetPosition() - (_tcslen(pszSrc) + _tcslen(_T("\r\n")));
                break;
            }
        }
        file.Close();
        file.Open(pszFile, CFile::modeWrite);
        file.Seek(dwPos, CFile::begin);
        file.WriteString(pszDes);
        file.Close();
    }
    catch(CException* e)
    {
        e->ReportError();
        e->Delete();
    }
    return 0;
}

// 11.txt (ANSI文本文件)
aaaaaa
111111
333333
444444

程序运行之后文件内容
aaaaaa
222222
333333
444444