我們知道在其他語言中有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 }
下面是顯示的效果截圖:

