调用:char* outStr[20];
    truncate_str((char*)sMsgContent,outStr);函数实现
int CHwGate::truncate_str(char *str,char** outStr)
 {
    int len,num,i;
    char buf[141];
    len=strlen(str);     .....AfxMessageBox(buf);//程序运行到此能正确显示buf
strcpy(*outStr,buf);//运行outStr此处报错?是不是要什么初始化啊?
outStr++;
        ....
return 1;
}

解决方案 »

  1.   

    肯定出错的,你还没分配内存呢
    改为
    if(*outStr != NULL) delete [](*outStr)
    *outStr = new char[len];
    strcpy(*outStr,buf);//运行outStr此处报错?是不是要什么初始化啊?
    outStr++;
    或者首先初始化分配足够的内存
    char* outStr[20];
    for(int i = 0; i < 20; i ++)
    {
        outStr[i] = new char[1024];
    }
    然后用就可以了,记住,退出时要delete
      

  2.   

    我这样用是对了?
    但如何取得*outStr的值呢?char* outStr[20];
    for(int i = 0; i < 20; i ++)
    {
        outStr[i] = new char[141];
    }
        truncate_str((char*)sMsgContent,outStr);
    while(1)
    {
    AfxMessageBox(*outStr);
    (*outStr)++;// 此处错,下一个输出的字符串我如何获得,一直到全部去出来?
    if(*outStr != NULL) 
    delete [](*outStr);
    }
      

  3.   

    char* outStr[20];
    char** pstr = NULL;
    char** ptemp = NULL;
    for(i = 0; i < 20; i ++)
    {   outStr[i] = new char[141];
        strcpy(outStr[i], "aaaaaa");
    }
    pstr = outStr;
    for (i = 0; i < 20; i++)
    {
        AfxMessageBox(*pstr);
        ptemp = pstr;
        pstr++; 
        if(*ptemp != NULL) 
        delete [](*ptemp);
    }