两个辅助指针变量截取字符串

如题:有一个字符串符合以下特征(”abcdef,acccd,eeee,aaaa,e3eeeee,sssss,";)

思路:用一个二维数组来存储截取后的字符串,以‘  ,‘作为分隔符,截取完一个字符串后,更新当前的位置。直到‘  \0  ‘.

代码:

 1 #include <stdlib.h>
 2 #include <string.h>
 3 #include <stdio.h>
 4 int splitString(const char *buf1, char c, char buf2[10][30], int *count)
 5 {
 6     char *p=NULL, *pTmp = NULL;
 7     int    tmpcount = 0;
 8     //1. p和ptmp初始化
 9     p = buf1;
10     pTmp = buf1;
11     do
12     {
13         //2.检索符合条件的位置p后移形成差值挖字符串
14         p = strchr(p, c);
15         if (p != NULL)
16         {
17             if (p-pTmp > 0)
18             {
19                 strncpy(buf2[tmpcount], pTmp,  p-pTmp);
20                 buf2[tmpcount][p-pTmp]  = ‘\0‘;  //把第一行数据变成 C风格字符串
21                 tmpcount ++;
22                 //3.重新让p和ptmp达到下一次检索的条件
23                 pTmp = p = p + 1;
24             }
25         }
26         else
27         {
28             break;
29         }
30     } while (*p!=‘\0‘);
31
32     *count = tmpcount;
33     return 0;
34 }
35 int main(int argc,char *argv)
36 {
37     int ret = 0, i = 0;
38     char *p1 = "abcdef,acccd,eeee,aaaa,e3eeeee,sssss,";
39     char cTem= ‘,‘;
40     int nCount;
41     char myArray[10][30];
42
43     ret = splitString(p1, cTem, myArray, &nCount);
44
45     if (ret != 0)
46     {
47         printf("fucn spitString() err: %d \n", ret);
48         return ret;
49     }
50     for (i=0; i<nCount; i++ )
51     {
52         printf("%s \n", myArray[i]);
53     }
54     printf("Split complete\n");
55     return ;
56 }

时间: 2024-12-28 21:03:09

两个辅助指针变量截取字符串的相关文章

C提高_day03_两个辅助指针变量挖字符串(强化4)

#define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <string.h> #include <stdio.h> //两个辅助指针变量挖字符串, 的第三种内存模型 //指针做函数参数 void FreeMem(char **myp,int count) //释放内存函数 { int i=0; if(myp == NULL) { return; } for(i=0;i<count;i++) { if

C提高_day03_两个辅助指针变量挖字符串(强化3)

#define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <string.h> #include <stdio.h> //两个辅助指针变量挖字符串, 的第三种内存模型 //指针做函数参数 int spitString4(char *buf1,char c,char ***myp3,int *count) //**pp二级指针做输入 { char *p=NULL, *pTmp = NULL; int tmpc

C提高_day03_两个辅助指针变量挖字符串(强化2)

#include <stdlib.h> #include <string.h> #include <stdio.h> //两个辅助指针变量挖字符串, 的第三种内存模型 char ** spitString3(char *buf1,char c,int *count) //**pp二级指针做输入 { char *p=NULL, *pTmp = NULL; int tmpcount = 0; char **myp=NULL; //1 p和ptmp初始化 p = buf1;

编程题:用指针变量输出字符串

#include<stdio.h> void main() {  char *string="Hello"; printf("%s\n",string); } 字符串指针变量的介绍: 运行结果: 编程题:用指针变量输出字符串,布布扣,bubuko.com

关于指针 用字符数组,字符指针变量输入字符串 动态为字符型指针变量分配内存

#include <stdio.h> #include <iostream> #include<math.h> using namespace std; int main() { //声明字符型数组和指针变量 char str[10]; char *strip=str; //输入输出 cout<<"str="; cin>>str; //用字符数组输入字符串 cout<<"str="<<

字符串指针变量与字符数组的区别

使用字符串指针变量与字符数组的区别 (1)分配内存 设有定义字符型指针变量与字符数组的语句如下: char *pc ,str[100]; 则系统将为字符数组str分配100个字节的内存单元,用于存放100个字符.而系统只为指针变量pc分配4个存储单元,用于存放一个内存单元的地址.(2)初始化赋值含义 字符数组与字符指针变量的初始化赋值形式相同,但其含义不同.例如: char str[ ] ="I am a student ! " ,s[200]; char *pc="You

C语言中,为什么字符串可以赋值给字符指针变量

转载于:http://www.cnblogs.com/KingOfFreedom/archive/2012/12/07/2807223.html 本文是通过几篇转帖的文章整理而成的,内容稍有修改: 一. char *p,a='5';p=&a;                     //显然是正确的,p="abcd";              //但为什么也可以这样赋值?? 问:一直理解不了为什么可以将字串常量赋值给字符指针变量,请各位指点! 答: 双引号做了3件事:  1.

黑马程序员---C基础9【字符串的输入输出】【字符串相关函数】【指针】【指针变量初始】【二级指针】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- [字符串的输入输出] 1.字符串输出: %s-------从给定的地址开始输出字符直到遇到\0停止: printf("%s\n",&a[3]);  printf("%s\n",a); char a[]="hellowo\0rd!"; 2.字符串输入: 从键盘上接收一个字符串,保存在以a为首地址的字符数组中 scanf("%s&

使用字符串指针变量与字符数组的区别

用字符数组和字符指针变量都可以实现字符串的存储和运算,但是两者是有区别的.在使用时,应注意以下几个问题: 1)   字符串指正变量本身是一个变量,用于存放字符串的首地址.而字符串本身是存放在该首地址的一块连续的内存空间中并以“\0”作为字符串的结束.字符数组是由若干个数组元素组成的,它可用来存放整个字符串. 2)   赋值方式.对字符数组只能对各个元素赋值,不能用以下方式对字符数组赋值. 对字符指针变量,可以采用下面方法赋值. 3)   字符数组由若干个元素组成,每个元素中放一个字符,而字符指针