为什么这么复杂?
照你的意思,一条语句就搞顶了
file.Write(s,s.GetLength());

解决方案 »

  1.   

    你那种方法会写入写怪字符进去的
    你没有初始化buff[100]
    譬如
    buff[100]中你只要前30个字符,那么后70个字符就是那些怪字符了.
      

  2.   

    1.  f.Seek(20,CFile::current  );   //是不是一定可以成功呢, 你的文件一开是有没有这么大
    2.  建议你这样写入字符串
      CHAR lpBuf[100];
       ZeroMemory(lpBuf,100);
       // then copy the string into lpBuf
       // 注意 '\0 ' 字符的写入问题
       f.Write(lpBuf,100); 读时:
       CHAR lpBuf[100];
       f.read(lpBuf,100);
        
      

  3.   

    1.很对。
    2.用read读就行啊!
      

  4.   

    1.你以modeCreate ¦ modeWrite 方式打开文件,那么即使文件已经存在,也被清空了,
    所以f.Seek(20,CFile::current  )肯定不成功!2.字符数组一定要初始化,memset (buff, 0, sizeof(buff));3.以modeRead 方式打开文件
      char szBuf[100];
      f.read(szBuf,100);
      

  5.   

    一种改进的方法:
     struct l_strbuf
     {
      UINT nSize;
      CHAR tBuf[50];
     };
     struct s_strbuf
    {
      UINT nSize;
      CHAR tBUF[100];
     }; // 目的是为了省点空间  
    历一种方法:  写入回车换行符但读是效率不高。
      

  6.   

    上面这样写好象没什么问题,可以简化为直接将str写进文件
    f.write( str.GetBuffer( str.GetLength() ), str.GetLength() )
    读的时候同样的过程,将write换成read就行了。