Ryo*_*Ryo 4 c string tokenize strtok
我有以下字符串:
char str[] = "A/USING=B)";
Run Code Online (Sandbox Code Playgroud)
我想分获得独立的A和B值与/USING=作为分隔符
我该怎么做?我知道,strtok()但它只是被一个字符分割为分隔符。
正如其他人指出的那样,您可以使用strstrfrom<string.h>在字符串中查找分隔符。然后复制子字符串或修改输入字符串以拆分它。
这是一个返回拆分字符串第二部分的实现。如果字符串无法拆分,则返回NULL且原始字符串不变。如果需要将字符串拆分成更多的子串,可以重复调用尾部的函数。第一部分将是输入字符串,可能会缩短。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *split(char *str, const char *delim)
{
char *p = strstr(str, delim);
if (p == NULL) return NULL; // delimiter not found
*p = '\0'; // terminate string after head
return p + strlen(delim); // return tail substring
}
int main(void)
{
char str[] = "A/USING=B";
char *tail;
tail = split(str, "/USING=");
if (tail) {
printf("head: '%s'\n", str);
printf("tail: '%s'\n", tail);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我知道
strtok(),但它只是被一个字符分割为分隔符
不,不是。
根据手册页strtok(),(重点是我的)
char *strtok(char *str, const char *delim);[...] 该
delim参数指定一组字节,用于分隔已解析字符串中的标记。[...]已解析字符串中两个或多个连续分隔符字节的序列被视为单个分隔符。[...]
因此,它不必是您提到的“一个字符” 。您可以使用字符串(如您的情况)"/USING="作为分隔符来完成工作。