我想编辑一个文件,找到其中的一个字符串将其替换,比如将“192.168.88.7”替换为“192.168.88.142”(根据输入,所以长度不固定),我试过fseek,fwrite好像都不行,因为我的目标和源字符串可能长度不相等,请教各位该如何做?最好能给段简单源码!谢谢了

解决方案 »

  1.   

    CStdioFile
    CStdioFile::ReadString
    CStdioFile::WriteString
    很简单呀
      

  2.   

    CStdioFile file1;
    CString temp,ss;
    file1.Open("4.txt",CFile::modeCreate|CFile::modeReadWrite|CFile::modeNoTruncate);
    while(file1.ReadString(temp))
    {
    temp.Replace("192.168.88.142","192.168.88.6");
    ss+=temp+"\n";
    }
    file1.Close();
    file1.Open("4.txt",CFile::modeCreate|CFile::modeReadWrite|CFile::modeNoTruncate);
    file1.WriteString(ss);
    file1.Close(); ^_^
      

  3.   

    每个帖子我都看了,没有一个答案是对的,可能我没说清楚,我需要用fopen之类的函数,而不是用MFC或者STL,另外我的“192.168.88.7"是不顾定位置的。急,所以多开了贴,只要有人回答出来,所有帖子分数都可以给你,如果需要,还可以另加分。分数本来就是用来交流的,我不会小气的:)
      

  4.   

    :)谢谢各位,思想我大概知道,但关键是代码,想偷懒!:)目前想了个偷懒的办法,创建一个不可见的多行CEdit,然后把内容读入,再每行查找关键字,找到后用replacesel替换,实在是太懒了,所以想出这么个馊主意。不过考虑到也有和我一样懒的人,所以还是写出来,不怕丢脸!:)帖子再留2天,看看是不是还有好的答案,到时候一起给分!
      

  5.   

    CStringArray strarray;
    CStdioFile file;
    if( !file.Open("c:\\1.txt", CFile::modeRead) )
    {
    AfxMessageBox("can not open file!");
    return;
    }
    CString strLine;
    while(file.ReadString(strLine))
    {
    if(strLine.Find("192.168.88.7") != -1)
    strLine.Replace("192.168.88.7", "192.168.88.142"); strarray.Add(strLine);
    }
    file.Close();

    if( !file.Open("c:\\1.txt", CFile::modeCreate|CFile::modeWrite) )
    {
    AfxMessageBox("can not open file!");
    return;
    }
    for(i=0; i<strarray.GetSize(); i++)
    {
    str = "";
    str = strarray[i] + "\n";
    file.WriteString(str);
    }
    file.Close();