2013-03-18 79 views
10

如何将字符串拆分为令牌,然后将它们保存到数组中?将字符串拆分为令牌并将它们保存在数组中

具体来说,我有一个字符串"abc/qwe/jkh"。我想分开"/",然后将令牌保存到数组中。

输出将会是这样:

array[0] = "abc" 
array[1] = "qwe" 
array[2] = "jkh" 

请帮我

+3

你可以使用strtok的 – 2013-03-18 08:20:03

回答

16
#include <stdio.h> 
#include <string.h> 

int main() 
{ 
    char buf[] ="abc/qwe/ccd"; 
    int i = 0; 
    char *p = strtok (buf, "/"); 
    char *array[3]; 

    while (p != NULL) 
    { 
     array[i++] = p; 
     p = strtok (NULL, "/"); 
    } 

    for (i = 0; i < 3; ++i) 
     printf("%s\n", array[i]); 

    return 0; 
} 
+0

如果我想比较array [0]与数组[1],我应该怎么做? – 2013-03-18 08:40:49

+1

您使用中的另一个函数:if(strcmp(array [0],array [1])== 0){// array [0] = array [1]} – rlib 2013-03-18 09:26:31

+3

这假设已知令牌的数量。 – 2014-06-04 17:05:26

6

您可以使用strtok()

char string[]= "abc/qwe/jkh"; 
char *array[10]; 
int i=0; 

array[i] = strtok(string,"/"); 

while(array[i]!=NULL) 
{ 
    array[++i] = strtok(NULL,"/"); 
} 
+3

如何'阵列[++ i] = strtok(NULL,“/”);'工作? – Charles 2015-11-18 14:10:56

+0

空指针可能被指定为strtok()的第一个参数,在这种情况下函数将继续扫描上一次成功调用该函数的地方。 – 2016-12-07 11:33:50

+1

工作很不错。只是如何给动态计数,如果我们不知道slpit元素的数量.. – Sam 2017-11-26 15:56:10