在 C 中获取字符串的最后一个标记
get the last token of a string in C
我想要做的是给定一个输入字符串,我将不会知道它的大小或标记的数量,能够打印它的最后一个标记。
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;
我希望我的 return 成为
string
但我得到的是 (null)。任何解决方法?我在网上搜索过,似乎找不到这个问题的答案。至少对于 C 编程语言。
如果您对特定字符进行分词,即示例中的 '/'
,则根本不需要对字符串进行分词:调用 strrchr
查找最后一个 [=11] 的位置=],然后将 1
添加到结果指针以跳过定界符,如下所示:
char *s = "some/very/big/string";
char *last = strrchr(s, '/');
if (last != NULL) {
printf("Last token: '%s'\n", last+1);
}
在它变为空之前使用另一个变量来存储最后一个标记
char s[] = "some/very/big/string";
char * token, * last;
last = token = strtok(s, "/");
for (;(token = strtok(NULL, "/")) != NULL; last = token);
printf("%s\n", last);
我想要做的是给定一个输入字符串,我将不会知道它的大小或标记的数量,能够打印它的最后一个标记。
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;
我希望我的 return 成为
string
但我得到的是 (null)。任何解决方法?我在网上搜索过,似乎找不到这个问题的答案。至少对于 C 编程语言。
如果您对特定字符进行分词,即示例中的 '/'
,则根本不需要对字符串进行分词:调用 strrchr
查找最后一个 [=11] 的位置=],然后将 1
添加到结果指针以跳过定界符,如下所示:
char *s = "some/very/big/string";
char *last = strrchr(s, '/');
if (last != NULL) {
printf("Last token: '%s'\n", last+1);
}
在它变为空之前使用另一个变量来存储最后一个标记
char s[] = "some/very/big/string";
char * token, * last;
last = token = strtok(s, "/");
for (;(token = strtok(NULL, "/")) != NULL; last = token);
printf("%s\n", last);