goto,END
来源:互联网 发布:超星校园阅读软件 编辑:程序博客网 时间:2024/05/01 07:10
#define _CRT_SECURE_NO_WARNINGS #include <stdlib.h>#include <string.h>#include <stdio.h>//有一个字符串符合以下特征(”abcdef,acccd,eeee,aaaa,e3eeeee,sssss,";)//分清楚赋值指针变量 和 操作逻辑之间的关系char ** spitString3(const char *buf1, char c, int *count){char *p=NULL, *pTmp = NULL;inttmpcount = 0;char **myp = NULL;//1 p和ptmp初始化p = buf1;pTmp = buf1;//第一遍求出countdo {//2 检索符合条件的位置 p后移 形成差值 挖字符串p = strchr(p, c);if (p != NULL){if (p-pTmp > 0){tmpcount ++;//3重新 让p和ptmp达到下一次检索的条件pTmp = p = p + 1;}}else{break;}} while (*p!='\0');*count = tmpcount;//根据多少行 精确的分配内存myp = (char **)malloc(tmpcount * sizeof(char *) );if (myp == NULL){return NULL;}//////////////////////////////////////////////////////////////////////////tmpcount = 0;//1 p和ptmp初始化p = buf1;pTmp = buf1;do {//2 检索符合条件的位置 p后移 形成差值 挖字符串p = strchr(p, c);if (p != NULL){if (p-pTmp > 0){int len = p - pTmp + 1;myp[tmpcount] = (char *)malloc(len * sizeof(char));if (myp[tmpcount] == NULL){return NULL;}strncpy(myp[tmpcount], pTmp, p-pTmp);myp[tmpcount][p-pTmp] = '\0'; //把第一行数据变成 C风格字符串tmpcount ++;//3重新 让p和ptmp达到下一次检索的条件pTmp = p = p + 1;}}else{break;}} while (*p!='\0');//*count = tmpcount;return myp;}void FreeMem2(char **myp, int count){int i =0; if (myp == NULL){return;}for (i=0; i<count; i++){if (myp[i] != NULL){free(myp[i]);}}if (myp != NULL){free(myp);}}void FreeMem3(char ***p, int count){int i =0; char **myp = NULL;if (p == NULL){return;}myp = *p;if (myp == NULL) {return ;}for (i=0; i<count; i++){if (myp[i] != NULL){free(myp[i]);}}if (myp != NULL){free(myp);}*p = NULL; //把实参二级指针 ,修改成NULL}//分清楚赋值指针变量 和 操作逻辑之间的关系int spitString4(const char *buf1, char c, char ***myp3, int *count){int ret = 0;char *p=NULL, *pTmp = NULL;inttmpcount = 0;char **myp = NULL;//1 p和ptmp初始化p = buf1;pTmp = buf1;//第一遍求出countdo {//2 检索符合条件的位置 p后移 形成差值 挖字符串p = strchr(p, c);if (p != NULL){if (p-pTmp > 0){tmpcount ++;//3重新 让p和ptmp达到下一次检索的条件pTmp = p = p + 1;}}else{break;}} while (*p!='\0');*count = tmpcount;//根据多少行 精确的分配内存myp = (char **)malloc(tmpcount * sizeof(char *) );if (myp == NULL){ret = -1;printf("func spitString4() err:%d (tmpcount * sizeof(char *) )", ret);goto END;//return -1;}memset(myp, 0, tmpcount * sizeof(char *));//////////////////////////////////////////////////////////////////////////tmpcount = 0;//1 p和ptmp初始化p = buf1;pTmp = buf1;do {//2 检索符合条件的位置 p后移 形成差值 挖字符串p = strchr(p, c);if (p != NULL){if (p-pTmp > 0){int len = p - pTmp + 1;myp[tmpcount] = (char *)malloc(len * sizeof(char));if (myp[tmpcount] == NULL){ret = -2;printf("func spitString4() err:%d malloc(len * sizeof(char) )", ret);goto END;}strncpy(myp[tmpcount], pTmp, p-pTmp);myp[tmpcount][p-pTmp] = '\0'; //把第一行数据变成 C风格字符串tmpcount ++;//3重新 让p和ptmp达到下一次检索的条件pTmp = p = p + 1;}}else{break;}} while (*p!='\0');END:if (ret != 0) //失败{//FreeMem2(NULL, *count ); //myp= NULL;FreeMem3(&myp, *count);}else{*myp3 = myp; //成功}return ret;}//多级指针 避免野指针 void main93(){int ret = 0, i = 0;char *p1 = "abcdef,acccd,";char cTem= ',';int nCount;char **p = NULL; //char buf[10][30]p= spitString3(p1, cTem, &nCount);if (p == NULL){printf("fucn spitString() err: %d \n", ret);return ret;}for (i=0; i<nCount; i++ ){printf("%s \n", p[i]);}//释放内存for (i=0; i<nCount; i++){free(p[i]);}free(p);printf("hello...\n");system("pause");return ;}void main(){int ret = 0, i = 0;char *p1 = "abcdef,acccd,";char cTem= ',';int nCount;char **p = NULL; //char buf[10][30]ret = spitString4(p1, cTem, &p, &nCount);if (ret != 0){printf("fucn spitString() err: %d \n", ret);return ret;}for (i=0; i<nCount; i++ ){printf("%s \n", p[i]);}//释放内存for (i=0; i<nCount; i++){free(p[i]);}free(p);printf("hello...\n");system("pause");return ;}//作业1 用第三种内存模型求解问题/*int spitString2(const char *buf1, char c, char ***pp, int *count){}char ** spitString3(const char *buf1, char c, int *count){}*/
0 0
- goto,END
- GOTO
- goto
- goto
- goto
- goto
- goto
- goto
- goto
- goto
- goto
- goto
- goto
- goto
- end ()
- .end()
- end
- END
- Android 开机启动速度优化-bootchart工具
- error: import caffe
- EventBus教程
- 【前端学习笔记】深入学习Javascript:Cookie
- 较详细的介绍JNI
- goto,END
- Mysql Join语法解析与性能分析
- poj 1062 昂贵的聘礼
- Android Native/Tombstone Crash Log 详细分析
- Mongoose操作schema时默认表名添加s以及解决
- GIF演示排序算法
- Python安装matplotlib所需要的软件以及问题的解决方法
- C#使用希尔排序法对一维数组进行排序
- HDOJ 5344 MZL's xor 【math】