то, что я хочу сделать, дана строка ввода, которую я не буду знать, это размер или количество токенов, можно распечатать последний токен.
например:
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;
и я хочу, чтобы мое возrotation было
строка
но я получаю (null). Любые обходные пути? Я искал в Интернете и не могу найти ответ на этот вопрос. По крайней мере, для языка программирования C.
Если вы обозначаете определенный символ, т. Е. '/'
В вашем примере, вам вовсе не нужно токенизировать строку: вызовите strrchr
чтобы найти позицию последнего '/'
, и добавьте 1
к результирующему указателю, чтобы пропустить разделитель, например:
char *s = "some/very/big/string"; char *last = strrchr(s, '/'); if (last != NULL) { printf("Last token: '%s'\n", last+1); }
Demo.
Просто используйте другую переменную, чтобы сохранить последний токен, прежде чем он получит значение 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);