获取C中字符串的最后一个标记

时间:2015-09-28 12:27:55

标签: c tokenize strtok

我想要做的是给出一个输入字符串,我知道它的大小或标记的数量,能够打印它的最后一个标记。

e.x。:

char* s = "some/very/big/string";
char* token;

const char delimiter[2] = "/";

token = strtok(s, delimiter);

while (token != NULL) {
    printf("%s\n", token);
    token = strtok(NULL, delimiter);
}

return token;

我希望我的回归

  

的字符串

但我得到的是(null)。任何解决方法?我在网上搜索过,似乎无法找到答案。至少对于C编程语言。

2 个答案:

答案 0 :(得分:15)

如果您对特定字符进行了标记,例如您的示例中为'/',则根本不需要对字符串进行标记:请致电strrchr以查找上一个'/'的位置,并将1添加到结果指针以跳过分隔符,如下所示:

char *s = "some/very/big/string";
char *last = strrchr(s, '/');
if (last != NULL) {
    printf("Last token: '%s'\n", last+1);
}

Demo.

答案 1 :(得分:4)

只需使用另一个变量来存储最后一个令牌,然后才能显示

char s[] = "some/very/big/string";
char * token, * last;
last = token = strtok(s, "/");
for (;(token = strtok(NULL, "/")) != NULL; last = token);
printf("%s\n", last);