所以,我正在尋找一個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