无题(四)续:分割字符串(在堆空间分配内存)
来源:互联网 发布:无线键盘鼠标 知乎 编辑:程序博客网 时间:2024/04/27 20:15
<pre name="code" class="cpp">#include "stdio.h"#include "stdlib.h"#include "string.h"int spitString03(const char *buf1, char c, char **mypp, int *num){int ret = 0;char *p = NULL;char *pTmp = NULL;int ncount = 0;if (buf1==NULL || num==NULL){return -1;}//步骤1 初始化条件 pTmp,p都执行检索的开头p = buf1;pTmp = buf1;do {//步骤2 strstr strchr,会让p后移 在p和pTmp之间有一个差值p = strchr(p, c);if (p == NULL) //没有找到则跳出来{break;}else {//挖字符串strncpy(mypp[ncount], pTmp, p-pTmp);mypp[ncount][p-pTmp] = '\0';ncount++;//步骤3 让p和pTmp重新初始化,达到检索的条件pTmp = p = p + 1;}} while (*p != '\0');//printf("ncout:%d\n", ncount);*num = ncount;return ret;}//分配内存函数char **getMem(int num){int i = 0;//char **pp = (char **)malloc(sizeof(num*sizeof(char *)));char **pp = (char **)malloc(num* sizeof(char *) );if (pp == NULL){return NULL;}for (i=0; i<num; i++){pp[i] = (char *)malloc(100);if (pp[i] == NULL){return NULL;}}return pp;}int FreeMem(char **pp, int num){int i = 0;if (pp == NULL){ return -1;}for (i=0; i<num; i++){free(pp[i]);}free(pp);return 0;}//对付1个入口多个出口的问题。。。有方法//采用goto语句进行处理 将要释放的内存或者后期处理的语句 放到goto表示符的后面void main(){intret = 0, i = 0;intnum = 0;intnumArray = 10;const char*buf1 = "abcdef,acccd,";charc = ',';char**pp = NULL;char**pp2 = NULL;//"ab"//char *buf = (char *)malloc(strlen("ab") + 1);//strcpy(buf, "ab");pp = getMem(numArray);if (pp == NULL){ret = -1;printf("func getMem() err:%d\n", ret);goto End;}pp2 = getMem(numArray);if (pp2 == NULL){ret = -2;printf("func getMem() err:%d\n", ret);goto End;}ret = spitString03(buf1, c, pp, &num);if (ret == 0) //故意写错{printf("func spitString() err:%d\n", ret);goto End;}for (i=0; i<num; i++){printf("%s\n", pp[i]);}End:if (pp != NULL){FreeMem(pp, numArray);}if (pp2 != NULL){FreeMem(pp2, numArray);}system("pause");}
0 0
- 无题(四)续:分割字符串(在堆空间分配内存)
- 无题(四):分割字符串(运用二维数组)
- 无题(二):字符串翻转(结合内存四区)
- CLR via C# 读书笔记(四).net平台对象在托管堆上的内存分配
- (五)1在内核空间分配内存
- java堆空间(内存)
- java字符串池(string pool)和字符串堆(heap)内存分配
- 操作系统 笔记(三)计算机体系结构,地址空间、连续内存分配(四)非连续内存分配:分段,分页
- C++动态内存分配(堆)
- iOS 内存分配(栈和堆)
- 如何让类对象只在栈(堆)上分配空间?
- 如何让类对象只能在堆(栈)上分配空间
- 如何让类对象只在栈(堆)上分配空间?
- C/C++如何让类对象只在栈(堆)上分配空间?
- 五、如何让类对象只在栈(堆)上分配空间?
- 如何让类对象只在栈(堆)上分配空间?
- 如何限制一个类对象只在栈(堆)上分配空间?
- 如何让类对象只在栈(堆)上分配空间?
- hdoj 2816【字符串】
- Android Material Design : CollapsingToolbarLayout使用简介
- log4j:WARN Please initialize the log4j system properly解决办法
- android---(PopupWindows、Notification)
- USACO Section 1.3 wormhole (暴力+模拟)
- 无题(四)续:分割字符串(在堆空间分配内存)
- JUnit报错java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
- 基于角色的访问控制(RBAC)介绍
- cf#309-B. Ohana Cleans Up-排序水题
- draw_rect,按需绘制
- XML 基础知识
- 聪明无用
- void main()误区
- jaxp解析xml 对xml文件进行增删改查