const char *str = "ABCDEFGHIJKLMN";
int len;
len = strlen(str);
char *array = new char[len];for(int i=0; i<len; i++)
{
    array[i]++;
}AfxMessageBox(array);
delete [] array;// 结果不是"BCDEFGHIJKLMNO"而是一些乱码字符,这是为什么?
// 怎样进才能达到我预料的效果呢?谢谢!

解决方案 »

  1.   

    char *array = new char[len];
    -->
    char *array = new char[len + 1];
      

  2.   

    for(int i=0; i<len; i++)
    {
        array[i] = str[i]++;
    }
      

  3.   

    你要怎么变换呢?
    memset(array,0,len + 1); for(int i=0; i<len; i++)
    {
    array[i] = *(str+i);
    }
      

  4.   

    array[i]++;
    有问题啊,这个数组里存的并不是"ABCDEFGHIJKLMN",而是没有初始化的一堆莫明其妙的东西,加了之后也是乱码
      

  5.   

    首先你new的大小应该是len+1
    其次你申请的内存要初始化
      

  6.   

    const char *str = "ABCDEFGHIJKLMN";
    int len;
    len = strlen(str);
    char *array = new char[len+1];
    memset(array,0,len + 1); for(int i=0; i<len; i++)
    {
    array[i] = *(str+i) + 1 ;
    } AfxMessageBox(array);
    delete [] array;
      

  7.   

    刚才我犯了一个低级错误,没有给数组赋值现在明白了! char *str = "ABCDEFGHIJKLMN";
    int len;
    len = strlen(str);
    char *array = new char[len];
    for(int i=0; i<len; i++)
    {      array[i] = str[i+1];
    } AfxMessageBox(array);
    delete [] array;