Вы можете сделать это довольно легко с strstr
:
char *strstrtok(char *str, char *delim)
{
static char *prev;
if (!str) str = prev;
if (str) {
char *end = strstr(str, delim);
if (end) {
prev = end + strlen(delim);
*end = 0;
} else {
prev = 0;
}
}
return str;
}
Это почти то же самое, что и реализация strtok
, просто вызывая strstr
и strlen
вместо strcspn
и strspn
. Он также может возвращать пустые токены (если есть два последовательных разделителя или разделитель на обоих концах); Вы можете проигнорировать их, если хотите.