您的位置:首页 > 其它

二级指针第三种内存模型

2015-08-27 11:04 253 查看
二级指针第三种内存模型

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

int spitString(const char *string, char c, char **mypp, int *num)

{

char *p = NULL;

char *tmp = NULL;

int ncount = 0;

if (string == NULL || num == NULL)

{

return -1;

}

p = string;

tmp = string;

do

{

p = strchr(p, ',');

if (p == NULL)

{

break;

}

else

{

strncpy(mypp[ncount], tmp, p - tmp);

mypp[ncount][p - tmp] = '\0';

ncount++;

tmp = p = p + 1;

}

} while (*p!='\0');

*num = ncount;

return 0;

}

char **getMem(int num)

{

int i = 0;

char **pp = (char **)calloc(num,sizeof(char *));

if (pp == NULL)

{

return -1;

}

for (i = 0; i < num; i++)

{

pp[i] = (char *)calloc(100,sizeof(char));

if (pp[i] == NULL)

{

return -1;

}

}

return pp;

}

char **freeMem(char **pp, int num)

{

int i = 0;

for (i = 0; i < num; i++)

{

free(pp[i]);

}

free(pp);

}

int main()

{

int i = 0;

int ret = 0;

int numarray = 10;

const char *buf1 = {"China,is,so,great,"};

char c = ',';

char **pp = NULL;

pp = getMem(numarray);

if (pp == NULL)

{

ret= -1;

printf("func getMem() err:%d\n", ret);

goto End;

}

int num = 0;

ret=spitString(buf1,c,pp,&num);

if (ret != 0)

{

printf("func spitString() err:%d\n",ret);

return ret;

goto End;

}

printf("%d\n",num);

for (i = 0; i < num; i++)

{

printf("%s\n",pp[i]);

}

End:

if (pp != NULL)

{

freeMem(pp,numarray);

}

system("pause");

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: