strtok c 多个字符作为一个分隔符

strtok c multiple chars as one delimiter

是否可以使用多个字符作为一个分隔符?

我想要一个字符串作为另一个字符串的分隔符。

char * input = "inputvalue1SEPARATORSTRINGinputvalue2SEPARATORSTRINGinputvalue2";
char * output = malloc(sizeof(char*));
char * delim = "SEPARATORSTRING";

char * example()
{
    char * ptr = strtok(input, delim);

    while (ptr != NULL)
    {
      output = strcat(output, ptrvar);
      output = strcat(output, "\n");
      ptr = strtok(NULL, delim);
    }

    return output;
}

Return 值打印为 printf:

inputvalue1
inputvalue2
inputvalue3

没有,根据the manual page for strtok():

The delim argument specifies a set of bytes that delimit the tokens in the parsed string.

如果要使用多字节字符串作为定界符,则没有行为类似于strtok() 的内置函数。您将不得不使用 strstr() 来查找输入中出现的分隔符字符串,然后手动前进。

这是来自 的示例:

char *multi_tok(char *input, char *delimiter) {
    static char *string;
    if (input != NULL)
        string = input;

    if (string == NULL)
        return string;

    char *end = strstr(string, delimiter);
    if (end == NULL) {
        char *temp = string;
        string = NULL;
        return temp;
    }

    char *temp = string;

    *end = '[=10=]';
    string = end + strlen(delimiter);
    return temp;
}