定义结构如下:
堆栈定义如下:
void my_split(char* psrc, char** ppdata,char*** pppsplit, int *ncount)//ppdata指向开辟一块空间的首地址
{
char* pstart = psrc;
char* pfind;
char* pdest;
int nlen = strlen(psrc);
pdest = *ppdata = new char[nlen];//存放字符串的地址.pdest 是指针变量,指向开辟空间的首地址
*pppsplit = new char*[20];//存放指针
*ncount = 0;
pfind = strchr(pstart,'(');
(*pppsplit)[(*ncount)++] = pdest;
strncpy(pdest,pstart,pfind - pstart);
pdest += pfind - pstart;
*pdest ++ = 0;
for(pstart = pfind + 1;';'!= *(pfind+1);pstart = pfind + 1)
{
pfind = strchr(pstart,',');
if(!pfind) pfind = strchr(pstart,')');//没有','就找')'
(*pppsplit)[(*ncount)++] = pdest;
strncpy(pdest,pstart,pfind - pstart);
pdest += pfind - pstart;
*pdest ++ = 0;//*pdest ++ = '/0';
}
for(int i = (*ncount) >> 1;i >=1;i--)
{
char* t = (*pppsplit)[i];
(*pppsplit)[i] = (*pppsplit)[*ncount - i];
(*pppsplit)[*ncount - i] = t;
}
}
//思想:在my_split函数中,开辟一个用于存放字符串的空间t,用pdest指向它。再用一个指针数组pppsplit用于存放pdest。当t存放了func/0时,把pdest给
//pppsplit,再移动pdest到/0后,再来一个aa/0,再把此时的地址(pdest)给pppsplit。