我需要拆分C中的字符串。我知道我可以使用strtok
,但我不確定如何使用它。在C中拆分字符串
例如,我想分割這個:"L 90,120,130,140"
,我想要得到'L',然後是由,
(逗號)分隔的整數。
我需要拆分C中的字符串。我知道我可以使用strtok
,但我不確定如何使用它。在C中拆分字符串
例如,我想分割這個:"L 90,120,130,140"
,我想要得到'L',然後是由,
(逗號)分隔的整數。
使用多個分隔符在strtok
:
char str[]="L 90,120,130,140";
char *tok;
tok = strtok (str," ,");
通過然後循環,並將其作爲你想要的。
下面是一個完整的例子:
#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) ;
}
的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");
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
可以是如果漂浮物是繩子的一部分,則進一步改善
這只是對其他答案的補充。請記住,strtok()不可重入。如果你在一個線程中,使用strtok_r。
好問題。但請告訴我們你還試過了什麼。有人會試圖糾正你的錯誤。 – Mahesh
http://www.teach-me-c.com/blog/breaking-string-pieces –
你總是可以嘗試搜索關於strtok的許多以前的問題和答案。 –