我需要拆分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的许多以前的问题和答案。 –