复杂的指针获取字符串里的内容放入数组
2018-01-14 16:53
381 查看
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> /* 4. 有一个字符串符合以下特征 "abcdef,acccd,eeee,aaaa,e3eeee,ssss," a) 以逗号,隔开字串,字串数量不会超过10个,每个字串长度不会超过30 b) 以逗号分隔字符串,并把结果传出 c)参考库函数:strchr(), strncpy(), strcpy(), strlen() */ char ** getMem(int n) { char **p = malloc(n * sizeof(char *)); //char *p[] if (p == NULL) { return NULL; } //每个元素的空间 int i = 0; for (i = 0; i < n; i++) { p[i] = malloc(30 * sizeof(char)); //char a[30] if (p[i] == NULL) { return NULL; } } return p; } void getMemFree(char ***buf, int n) { if (buf == NULL) { return; } char **tmp = *buf; int i = 0; for (i = 0; i < n; i++) { if (tmp[i] != NULL) { free(tmp[i]); tmp[i] = NULL; } } free(tmp); *buf = NULL; } /* 功能:把 "abcdef,acccd,eeee,aaaa,e3eeee,ssss,",以","分隔出字符串,分配放在二维数组buf中 参数: str: 原字符串,"abcdef,acccd,eeee,aaaa,e3eeee,ssss," c: 分隔标志:',' buf: 指针数组首元素地址,其空间在主调函数分配 count:保存buf字符串的个数 返回值: 成功:0 失败:非0 */ int spitString(const char *str, char c, char **buf, int *count) { if (str == NULL || count == NULL) { return -1; } const char *start = str; char *p = NULL; int i = 0; //第几行 do { //"abcdef,acccd,eeee,aaaa,e3eeee,ssss," p = strchr(start, c); if (p != NULL) { int len = p - start; if (len > 0) { strncpy(buf[i], start, len); //添加结束符 *( *(buf+i) + len ) = '\0'; i++; } start = p + 1; } else { strcpy(buf[i], start); i++; break; } } while (*start != 0); *count = i; //有多少行字符串 return 0; } int main() { char *p = "abcdef,acccd,eeee,aaaa,e3eeee,ssss,"; char **buf = getMem(10); //动态打造指针数组 int n = 0; int ret = 0; ret = spitString(p, ',', buf, &n); if (ret != 0) { return ret; } int i = 0; for (i = 0; i < n; i++) { printf("%s\n", buf[i]); //打印字符串 } getMemFree(&buf, n); //释放空间 printf("\n"); system("pause"); return 0; }
相关文章推荐
- Linux_C练习:利用指针数组实现字符串的排序。(从键盘获取五个字符串)
- 定义字符指针数组分别指向5个字符串常量,从小到大输出字符串内容
- 实验10指针2(1)输入一个字符串和一个正整数x,将该字符串中的后x个字符复制到另一个字符串y中,输出字符串y;再对y串的内容前后倒置后存入数组z中并输出。
- 获取字符串中的数字,放入数组并对其求和
- c语言函数如何获取传入的数组(指针)的指针所指向内容的长度
- 1.如何避免野指针2.获取字符串的两种方法。以及malloc,calloc,ralloc的使用注意点3.二维三维数组4.数组和函数的区别
- 将以逗号隔开的字符串,转化为字符数组并获取每一个的内容
- C语言 第 7 节 如何将字符串指针指向的内容赋值给数组
- 【C 语言】指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读)
- 黑马程序员——C复杂数据类型--数组、字符串、指针
- 主题:字符串之指针、数组
- C语言中字符数组和字符串指针分析
- 有趣的C语言--字符串与数组和指针的秘密
- 字符数组 字符指针 字符串常量
- Andorid String字符串数组内容动态增加
- LinuxC简谈之数组、字符串与指针相关的常见错误与问题
- 字符数组和字符串指针区别
- c语言中字符串常见初始化时的问题,以及字符串数组与指针区别的分析
- 数组、指针和字符串:指针变量的声明、地址相关运算--“*”和“&”
- 定义一个指针数组里面存放了3字符串,也就是数组里放了3个指针