使用strtok在C中拆分字符串

时间:2013-12-13 08:40:02

标签: c string split strtok

我对C字符串非常困惑。

我有一个包含18个元素的字符串数组: char user [18] [50] ,其中每个元素的字符串格式为“XXXX:YYYY:ZZZZ”< /强>

但我只需要ZZZZ,我想将它们存储在 char z [18] [50] 而不是 char * z 中以保持一致性(也不是很清楚char *)

所以我用strtok分割字符串

char *split;
char *temp;
for (i=0; i<18; i++){
  temp = user[i];
  split = strtok(temp, ":");

  //Wanna do something here
}

所以我猜每次迭代 split 是一个指向字符串数组的指针,元素为: XXXX YYYY ZZZZ 分开。

我怎样才能获得ZZZZ并将它们存储到 char z [18] [50]

2 个答案:

答案 0 :(得分:1)

然后你再两次打电话给strtok来获取它,

for (i=0; i<18; i++){
  temp = user[i];
  split = strtok(temp, ":");
  split = strtok(NULL, ":");
  split = strtok(NULL, ":");
  // Now split is pointing to ZZZZ    

  //Wanna do something here
}

答案 1 :(得分:1)

rindex function is more suitable

#include <stdio.h>
#include <string.h>
#include <strings.h>
int  main() {
    char *split;
    char buffer[256];
    char temp[] = "XXXX:YYYYY:ZZZZZ";
    split = rindex(temp, ':') + 1;
    strcpy(buffer, split);
    printf("%s\n", buffer);
    return 0;    

}