[英]Splitting a string in C
我需要在C中拆分一個字符串。我知道我可以使用strtok
但是我不確定如何使用它。
例如,我想拆的: "L 90,120,130,140"
和我想的“L”,然后,通過分離的整數,
(逗號)。
在strtok
使用多個定界符:
char str[]="L 90,120,130,140";
char *tok;
tok = strtok (str," ,");
然后遍歷並根據需要存儲它們。
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
如果浮點數是字符串的一部分,則可以進一步改進
這是一個完整的示例:
#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");
這只是對其他答案的補充。 請記住,strtok()不可重入。 如果您在線程中,請使用strtok_r。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.