切分 字符串指针数组(如环境变量) 的两种方法, 数组下标 和 指针
来源:互联网 发布:js控制span显示隐藏 编辑:程序博客网 时间:2024/06/05 00:40
题目:
有字符串数组如下:
char *strs[] = { "Jan.=January", "Feb.=February", "Mar.=March","cut", "Apr.=April", "May=May", "Jun.=June","cut", "Jul.=July", "Aug.=August", "Sept.=September","cut", "Oct.=October", "Nov.=November", "Dec.=December", NULL};
将它们按"cut"切分,并分别存入一个字符串指针数组的数组中,
如char *cuted[100][100]。
结果如下
cutted[0][1] = "Jan.=January"
cutted[0][2] = "Feb.=February"
cutted[0][3] = "Mar.=March"
cutted[0][4] = NULL
cutted[1][1] = "Apr.=April"
cutted[1][2] = "May=May"
cutted[1][3] = "Jun.=June"
cutted[1][4] = NULL
cutted[2][1] = "Jul.=July"
cutted[2][2] = "Aug.=August"
cutted[2][3] = "Sept.=September"
cutted[2][4] = NULL
cutted[3][1] = "Oct.=October"
cutted[3][2] = "Nov.=November"
cutted[3][3] = "Dec.=December"
cutted[3][4] = NULL
cutted[4][0] = NULL
用下标直观,容易理解;
但是如果你能用指针解决这个问题的话,那么你对指针的理解会更加深入!
/******************************************************** * @author Airead Fan <fgh1987168@gmail.com>* * @date 2011 9月 10 16:52:09 CST* ******************************************************** *after studying C 54 days* *after studying APUE 19 days* ********************************************************/#include <stdio.h>#include <string.h>#if 0一月份=JAN. Jan.=January二月份=FEB. Feb.=February三月份=MAR. Mar.=March 四月份=APR. Apr.=April 五月份=MAY May=May六月份=JUN. Jun.=June七月份=JUL. Jul.=July八月份=AUG. Aug.=August 九月份=SEP. Sept.=September十月份=OCT. Oct.=October十一月份=NOV. Nov.=November十二月份=DEC. Dec.=December #endifint main(int argc, char *argv[]){char *strs[] = { "Jan.=January", "Feb.=February", "Mar.=March", "cut", "Apr.=April", "May=May", "Jun.=June", "cut", "Jul.=July", "Aug.=August", "Sept.=September", "cut", "Oct.=October", "Nov.=November", "Dec.=December", NULL};fprintf(stdout, "-------------------------show string-------------------------\n");char **p;p = strs;while(*p != NULL && p != NULL){fprintf(stdout, "%s\n", *p);p++;}fprintf(stdout, "-------------------------attempt to split-------------------------\n");p = strs;while(*p != NULL && p != NULL){if(strcmp(*p, "cut") == 0){fprintf(stdout, "(null)\n");}else{fprintf(stdout, "%s\n", *p);}p++;}#if 0fprintf(stdout, "-------------------------split and store witd subnum-------------------------\n");char *cuted[100][100];int i;int j;int count;i = 0; p = strs; count = 0;while(*p != NULL && p != NULL){j = 0;while(*p != NULL && strcmp(*p, "cut") != 0){cuted[i][j++] = *p;p++;}i++;count ++;if(*p != NULL){*p++ = NULL;}}cuted[i][0] = NULL;fprintf(stdout, "count = %d\n", count);for(i = 0; i < count; i++){j = 0;while(cuted[i][j] != NULL)fprintf(stdout, "[%d]%s\n", i, cuted[i][j++]);}#endiffprintf(stdout, "-------------------------split and store with pointer-------------------------\n");char *cuted[100][100];int i;char *((*q)[100]);char **s;i = 0; p = strs; q = cuted;while(*p != NULL && p != NULL){s = *q;while(*p != NULL && strcmp(*p, "cut") != 0){*s++ = *p;p++;}q++;if(*p != NULL){*p++ = NULL;}}*q[0] = NULL;q = cuted; i = 0;while(*q[0] != NULL){s = *q;while(*s != NULL){fprintf(stdout, "[%d]%s\n", i, *s);s++;}i++;q++;}return 0;}
- 切分 字符串指针数组(如环境变量) 的两种方法, 数组下标 和 指针
- c++ 基础 指针访问数组两种方法 下标法 指针法
- C++ 中数组的指针和下标
- C++ 中数组的指针和下标
- C++中数组的下标和指针
- (c语言)指针和数组下标
- 字符串的数组和指针
- 通过数组初始化链表的两种方法:指向指针的引用node *&tail和指向指针的指针(二维指针)node **tail
- 数组指针,字符串指针的几种定义方法
- 指针、数组、字符串(二)两句话分清数组和指针
- 指针字符串和数组指针
- 字符串的链接(数组和指针)
- 数组、指针和字符串:指针的赋值和指针运算
- 字符串指针和数组
- 指针、数组和字符串
- 指针数组和字符串
- 指针的几种形式(常量指针和指针常量,指针数组和数组指针,指针函数和函数指针,数组和指针)
- 二维数组遍历输出(3种方法)(1)下标方法,(2)列指针方法,(3)行指针方法;
- 浅析C++中的this指针
- 求N位数的所有自然回归数(水仙花数)
- c++一般指针的深层复制和浅层复制(1)
- flex 组件添加鼠标手型
- 词法分析之浮点数分析
- 切分 字符串指针数组(如环境变量) 的两种方法, 数组下标 和 指针
- string类详解
- 水浒中的诗摘头保尾可谓豪气冲天
- c 语言函数 fflush()
- java Comparator用法实现接口Comparator
- 让人相当郁闷的命名问题
- Android:为什么现在google不让结束整个程序,只让结束单个Activity
- 拾回C++ boost
- 如何安全退出已调用多个Activity的Application?