2012-10-09 62 views
0

我需要拆分C中的字符串。我知道我可以使用strtok,但我不确定如何使用它。在C中拆分字符串

例如,我想分割这个:"L 90,120,130,140",我想要得到'L',然后是由,(逗号)分隔的整数。

+0

好问题。但请告诉我们你还试过了什么。有人会试图纠正你的错误。 – Mahesh

+4

http://www.teach-me-c.com/blog/breaking-string-pieces –

+0

你总是可以尝试搜索关于strtok的许多以前的问题和答案。 –

回答

2

使用多个分隔符在strtok

char str[]="L 90,120,130,140"; 
    char *tok; 
    tok = strtok (str," ,"); 

通过然后循环,并将其作为你想要的。

0

下面是一个完整的例子:

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

int main(int argc, char *argv[]) { 
    char str[]="L 90,120,130,140"; 
    char *p ; 

    p = strtok(str, " ") ; // p is now pointer to 'L\0' 
    printf("first token: %s\n", p) ; 

    while(p = strtok(NULL, ",")) printf("next token: %s\n", p) ; 

    exit(0) ; 
} 
0

的strtok会破坏你的字符串,你应该使用的sscanf:

char s[2]; 
int a,b,c,d; 
if(sscanf("L 90,120,130,140","%1s%d,%d,%d,%d",s,&a,&b,&c,&d)==5) 
    puts("reading was OK"); 
1
char str[]="L 90,120,130,140"; 
char *tok; 
tok = strtok (str," ,"); 

while (tok != NULL) { 
    if (isdigit(tok[0])) { 
     int i = atoi(&tok[0]); 
     printf("number %i\n",i); 
    } else { 
     printf("string %s\n",tok);    
    } 
    tok = strtok(NULL," ,"); 
} 

输出:

string L 
number 90 
number 120 
number 130 
number 140 

可以是如果漂浮物是绳子的一部分,则进一步改善

0

这只是对其他答案的补充。请记住,strtok()不可重入。如果你在一个线程中,使用strtok_r。