我需要在C中拆分一个字符串。我知道我可以使用strtok
,但我不确定如何使用它。
例如,我想拆分它:"L 90,120,130,140"
我希望得到'L',然后是由,
(逗号)分隔的整数。
答案 0 :(得分:2)
在strtok
中使用多个分隔符:
char str[]="L 90,120,130,140";
char *tok;
tok = strtok (str," ,");
然后循环并存储它们。
答案 1 :(得分: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
如果浮点数是字符串的一部分,可以进一步改进
答案 2 :(得分: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 ) ;
}
答案 3 :(得分: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");
答案 4 :(得分:0)
这只是对其他答案的补充。请记住,strtok()不是可重入的。如果您在线程中,请使用strtok_r。