char PrintText[256];
值为“1234567\n以上数字请确认”,其中
PrintText[7]="\"
PrintText[8]="n"
将PrintText[256]显示在messagebox上时,仍然为“1234567\n以上数字请确认”,没有自动换行
请问如何解决?
(ps:用CString的话比较简单,但是因为某种原因目前不能用CString,这样的前提下有办法没有呢?)

解决方案 »

  1.   

    PrintText[7]="\" 
    PrintText[8]="n"\n是一个字符,写错了这里
      

  2.   

    楼上两位都是对的,'\n'是一个字符的,它就是个换行符
    \是转义字符。可以对n进行转义,\n    就是换行 '\t' 就是tab,'\\'实际就是我们理解上的\
      

  3.   

    换行符"\n"占一个字节,你写出这样
    PrintText[7]="\"
    PrintText[8]="n" 
    就不是换行符了
      

  4.   

    PrintText[7]="\" 
    PrintText[8]="n" 
    是我debug程序的时候,watch这个数组时看到的呀,不是我主动这样写的啊!
      

  5.   

    如果是windows编程请使用"\r\n"
    回车换行
      

  6.   

    就是说我不是一个元素一个元素赋值的,而是用函数直接读取一起放入PrintText这个数组的,用debug中的中断功能调试程序时,watch这个数组,显示为
    PrintText[7]="\" 
    PrintText[8]="n" 
    这个是怎么回事呢?
      

  7.   

    意思就是说你在给PrintText[256]赋值的时候就错了
      

  8.   

    原程序如下:
    char PrintText[256];
    GetPrivateProfileString("abc", "123", NULL, PrintText, 256, "\\testWord.ini");GetPrivateProfileString()函数读取外部ini文件,并将指定项的值读进数组PrintText中,是个系统函数
    读取后,我watch这个PrintText数组,就发现:
    PrintText[7]="\" 
    PrintText[8]="n" 
    不知道哪里错了啊?
      

  9.   

       别用MessageBox换个另外的方式试试
      

  10.   

    不知道用什么了,弹出信息框,只能是messagebox吧
      

  11.   

    PrintText[7]="\r";
    PrintText[8]="\n";
      

  12.   

    谢谢cnzdqs的提醒:
    最后用了一个for循环,逐个检查PrintText数组元素,发现值等于“\”的,(例如索引为i),就重新赋值为:
    PrintText[i]="\r";
    紧接着下一个(索引i+1)值为“n”的,也重新赋值为:
    PrintText[i+1]="\n";
    这样终于搞定了。这个方法很无奈,但的确解决了问题。
    如果有更好的方法,请达人明示。
      

  13.   


    你写在ini里面写\n与在编译器里面写\n是不同的概念,ini会忠实的保留你输入的字符,但编译器会把你的\n转译成0xa即换行符。
    如果你既想换行显示又想把东西写在ini里面,你就必须自己去做编译器所作的事,查找"\\n"(\\会被转译为\),并替换为"\n",当然最好是"\r\n"。
    你可以试试,写一下PrintText[7] = '\r', PrintText[8] = '\n'作测试,这时你会发现换行了。