簡體   English   中英

在C中分割字串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM