往文件里面写CString,不明白为什么最后多出了一个“屯”字???
CString str,str1;
m_edit.GetWindowText(str);

FILE* file;
file = fopen("data.txt","w"); str1 = "\r\n---------------\r\n";
str = str + str1;
fwrite(str.GetBuffer(str.GetLength()),1,str.GetLength(),file); fflush(file);
fclose(file);
---------------
就是想在文本框内容的下一行插入一行“-------”分隔~~

解决方案 »

  1.   

    屯字是因为多读了一个未初始化的内存字节做为char显示 ...
    至于为什么多读  看看自己的代码就知道了.
      

  2.   

    fwrite 第2 个参数 给0~
      

  3.   

    楼主的输出具体是什么样子的?能否帖一下。
    另外,是外误用了Unicode字符集。VC2005中,新建的MFC工程默认是使用Unicode字符集的。
      

  4.   

    fwrite(str.GetBuffer(str.GetLength()),1,str.GetLength(),file);
    怎么会有四个参数的啊
      

  5.   

    就是4个参数啊。size_t fwrite(
       const void *buffer,
       size_t size,
       size_t count,
       FILE *stream 
    );
      

  6.   

    不好意思,我看错了,是四个.
    其他的代码上看不错问题,调试看看,没写之前最后一行,str是否有"屯";
    这样就可以排除fwrite问题了
      

  7.   

    to:emptyness(发现贴代码才是硬道理啊.)
    -----------------
    你说得我都明白,就是不知道为什么往文件里面多写了这个'屯'。
    =======================================
    to:steedhorse(晨星)
    ------------------
    我用得vc6,没有默认unicode,你在2005上没有问题?
    =======================================
    具体出错样子:
    1。输入adfadfadfasdfaf,点写入,再读取变成
    adfadfadfasdfaf
    ---------------

    2。什么都不输,再次写入,读取,变成
    adfadfadfasdfaf
    ---------------

    ---------------
    屯屯
    3。以此类推···不知道为什么。感兴趣的可以把工程文件传给你研究~呵呵
      

  8.   

    file = fopen("data.txt","wb");
      

  9.   

    读写方式都改为rb/wb就没问题了,楼上可否说明下为什么用字符方式读写会出现上述问题呢?
      

  10.   

    文本模式会在行尾追加\r\n之类的字符,造成数据错误。
    文本模式用fprintf来写。