我们知道在其他语言中有split函数可以把一个字符串按你自己想要的分隔符分割成多个字符串并以列表的形式返回。但是对于c语言来说,是没有这样一个函数接口可以直接调用的。但是有时候在项目工作中,又会用到这样的函数,特别是解析配置文件的时候。所以这里就写了一个split c语言的实现方法。
函数原型:void split(char *src,const char *separator,char **dest,int *num)
参数:src 源字符串的首地址
separator 指定的分割字符
dest 接收子字符串的数组
num 分割后子字符串的个数
实例代码:
1 #include <stdio.h> 2 #include <string.h> 3 4 void split(char *src,const char *separator,char **dest,int *num) { 5 char *pNext; 6 int count = 0; 7 if (src == NULL || strlen(src) == 0) 8 return; 9 if (separator == NULL || strlen(separator) == 0) 10 return; 11 pNext = strtok(src,separator); 12 while(pNext != NULL) { 13 *dest++ = pNext; 14 ++count; 15 pNext = strtok(NULL,separator); 16 } 17 *num = count; 18 } 19 20 int main(){ 21 char buf[]="name#sex#age#class#id#"; 22 //用来接收返回数据的数组。这里的数组元素只要设置的比分割后的子字符串个数大就好了。 23 char *revbuf[8] = {0}; 24 25 //分割后子字符串的个数 26 int num = 0; 27 28 split(buf,"#",revbuf,&num); 29 30 int i = 0; 31 for(i = 0;i < num; i ++) { 32 printf("%s ",revbuf[i]); 33 } 34 35 return 0; 36 }
下面是显示的效果截图: