2012-10-09 104 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。