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;
}
是否可以使用多个字符作为一个分隔符?
我想要一个字符串作为另一个字符串的分隔符。
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;
}