调用: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;
}
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;
}
改为
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
但如何取得*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);
}
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);
}