在C语言中,是否有一种方法可以拆分一个包含多个字符分隔符的字符串(使用strtok
或其他方法)?我正在寻找像这样的内容:
char a[14] = "Hello,World!";
char *b[2];
b[0] = strtok(a, ", ");
b[1] = strtok(NULL, ", ");
我希望这不要因为逗号和 W 之间没有空格而分割字符串。有没有办法实现这个目的?
char * strstr(const char *haystack, const char *needle)
来在字符串中定位分隔符。char a[14] = "Hello,World!";
char b[2] = ", ";
char *start = a;
char *delim;
do {
delim = strstr(start, b);
// string between start and delim (or end of string if delim is NULL).
start = delim + 2; // Use lengthof your b string.
} while (delim);
char*b[]
,谢谢。但我看不出你第一点的问题在哪里。delim
没有被增加,它仍然是NULL
,并且将允许退出循环。问题在哪里? - Didier Trosset可能是这样的吗?不能保证它能编译。 ;)
char* strstrtok(char *haystack, char *needle) {
static char *remaining = null;
char *working;
if(haystack)
working = haystack;
else if(remaining)
working = remaining;
else
return NULL;
char *result = working;
if(result = strstr(working, needle))
remaining = working + strlen(needle) + 1;
return result;
}
<string.h>
,那么它就是C语言;如果你使用std::substr
并且包含了<cstring>
,那么它就是C++语言。不过在C++中,你不会使用裸的字符指针来表示字符串。 - Kerrek SB