所以,我正在寻找一个C函数,相当于PHP的爆炸函数。 对于那些不熟悉的人:Explode抓取一个字符串并分析由给定char /转义序列分隔的每个条目。关于这个函数的最好的部分是它的返回值,它是一个已经伪造了所有条目的数组。问题是,这似乎并不存在于C中,可用的最接近的函数是strchr,但它只返回指向分裂的第一次出现的指针。C的替代PHP的爆炸函数
编辑:这里是函数,虽然它有不同的行为(如返回值不同),这是我想要的。
int explode(char* str, char* delim, char ***r) {
char **res = (char**) malloc(sizeof(char*) * strlen(str));
char *p;
int i = 0;
while (p = strtok(str, delim)) {
res[i] = malloc(strlen(p) + 1);
strcpy(res[i], p);
++i;
str = NULL;
}
res = realloc(res, sizeof(char*) * i);
*r = res;
return i;
}
有可能这样调用它:
char str[] = "test1|test2|test3";
char** res;
int count = explode(str, "|", &res);
int i;
for (i = 0; i < count; ++i) {
printf("%s\n", res[i]);
free(res[i]);
}
free(res);
你对此做过一些研究吗? – asprin