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

it-*_*son 3 c delimiter strtok

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

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

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;
}
Run Code Online (Sandbox Code Playgroud)

返回值打印为printf

inputvalue1
inputvalue2
inputvalue3
Run Code Online (Sandbox Code Playgroud)

Mar*_*lli 5

,根据手册页strtok()

所述 delim 参数指定 的一组限定在所解析的串令牌字节

如果您想使用多字节字符串作为分隔符,则没有像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 = '\0';
    string = end + strlen(delimiter);
    return temp;
}
Run Code Online (Sandbox Code Playgroud)