• c语言split的实现代码


      我们知道在其他语言中有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 }

    下面是显示的效果截图:

  • 相关阅读:
    String_字符串各个场景下的==
    jvm_run-time method area
    jvm类加载_类的流程
    TypeError: Restaurant() takes no arguments
    EMC测试国家标准GB/T 17626
    8-8 用户的专辑
    8-7 专辑
    8-6 城市名
    7-6 三个出口
    TypeError: module() takes at most 2 arguments (3 given)
  • 原文地址:https://www.cnblogs.com/piaoyang/p/9271879.html
Copyright © 2020-2023  润新知