what I want to do is given an input string, which I will not know it's size or the number of tokens, be able to print it's last token.
ex:
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;
and i want my return to be
string
but I what I get is (null). Any workarounds? I've searched the web and can't seem to find an answer to this. At least for C programming language.
If you tokenize on a specific character, ie '/'
in your example, you do not need to tokenize the string at all: call strrchr
to find the position of the last '/'
, and add 1
to the resultant pointer to skip the delimiter, like this:
char *s = "some/very/big/string";
char *last = strrchr(s, '/');
if (last != NULL) {
printf("Last token: '%s'\n", last+1);
}
Just use another variable to store last token before it gets null
char s[] = "some/very/big/string";
char * token, * last;
last = token = strtok(s, "/");
for (;(token = strtok(NULL, "/")) != NULL; last = token);
printf("%s\n", last);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.