将多个字符作为一个定界符

问题描述 投票:1回答:1

是否可以将多个字符用作一个定界符?

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

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;
}

Returnvalue p.e. with printf:
inputvalue1
inputvalue2
inputvalue3
c delimiter strtok
1个回答
0
投票

是,根据文档:

delim参数指定一组字节,这些字节在已解析的标记中定界串。呼叫者可以在后续呼叫中以delim指定不同的字符串,解析相同的字符串。

您的代码中有一些错误:

  1. strtokmodify输入字符串,这意味着您需要“拥有”内存,因此不能使用文字字符串,可以将其strdup
  2. 您的输出为malloc,大小为8
  3. ptrvarundefined

这里是可编译并运行的代码:

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

char *example()
{
    char *input = strdup("inputvalue1SEPARATORSTRINGinputvalue2SEPARATORSTRINGinputvalue2");
    char *output = malloc(sizeof(char) * strlen(input));
    char *delim = "SEPARATORSTRING";
    char *ptr = strtok(input, delim);

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

    free(input);
    return output;
}

int main () {
    char *result = example();
    printf("%s", result);

    free(result);
    return 0;
}

结果是:

inputvalue1
inputvalue2
inputvalue2
© www.soinside.com 2019 - 2024. All rights reserved.