char buf[8];
CString buffer;
char temp[5];
int k=0;
do
{
...//用于不断刷新buf的循环部分
++k;
::itoa(k,temp,10);
buffer=' '+temp+'=';
buffer+=buf;
buffer+="\x0d\x0a";
outcomeFile.Write(buffer,buffer.GetLength());
}while(...);列出部分输出到文件中的内容:
鴇20020312烫棠菾_
鴇20020315烫棠菾_
鴇20020316烫棠菾_
鴇20020411烫棠菾_
鴇20020514烫棠菾_
...问题:为什么除buf的内容输出正确外,其他部分会产生乱字符???如何避免???

解决方案 »

  1.   

    buf[],temp[],要初始化,
    for(int kk=0;kk<8;kk++)
      buf[kk]=0;
    另,字符串是"\0"结束的,要将最后一位如:buf[7]=0;
      

  2.   

    buffer=' '+temp+'=';应该用双引号吧
      

  3.   

    我按wang790729(tommy)说的改了改
    将 buffer=' '+temp+'='; 改为如下:
    buffer=" ";
    buffer+=temp;
    buffer+="=";
    这部分输出正确了!但是 buffer+="\x0d\x0a"; 却仍然输出乱字符!!!另:
    我以前也这样写过,程序同样编译通过,且输出正确!!!
    我想这里好象只是需要一个字符指针,单引号或双引号应该没什么区别。
      

  4.   

    Re : felics(felics) 
    无效!
      

  5.   

    outcomeFile.Write(buffer,buffer.GetLength());
    这一句会不会有问题,buffer是CString 可以这样用?
    outcomeFile.Write(buffer.GetBuffer(),buffer.GetLength());
    buffer.ReleaseBuffer();
      

  6.   

    建议用string,或用char,因为CString是个指针,赋值最好用CString.format或copymemory
      

  7.   

    应该说"\r\n"和“\x0a\x0d”都没有错,是你的buf没有正确初始化,如果直接用,那么应该是“\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc”,我觉得你是否可以这样char buf[8]="hello";这样就不会有乱码了。