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\n",revbuf[i]);
33      }
34  
35      return 0;
36 }

下面是顯示的效果截圖:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM