是否可以将多个字符用作一个定界符?
我想要一个字符串作为另一个字符串的分隔符。
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
是,根据文档:
delim参数指定一组字节,这些字节在已解析的标记中定界串。呼叫者可以在后续呼叫中以delim指定不同的字符串,解析相同的字符串。
您的代码中有一些错误:
strtok
将modify输入字符串,这意味着您需要“拥有”内存,因此不能使用文字字符串,可以将其strdup
。malloc
,大小为8。ptrvar
是undefined这里是可编译并运行的代码:
#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