在 C 中实现 Split 函数,重新分配没有效果

Implementation of Split function in C, reallocation doesn't have effect

我尝试实现一个拆分函数来拆分带有字符的字符串,如 java。但是我的函数需要将拆分后的字符串存储在具有 2 个维度的选项卡中(选项卡在参数中)。我的函数需要 return arg 的数量。

所以我在我的函数中传递了一个 char ** 的地址,我想重新分配这个 char ** 但是它不起作用。

int split(char*** parsedCommand,const char* splitCaracter,const char* myString) {
    char* splittedPart = "";
    char* copyOfmyString = NULL;
    int argc = 0;

    copyOfmyString = strdup(myString);
    splittedPart = strtok(copyOfmyString, splitCaracter);

    while(splittedPart != NULL)
    {
        *parsedCommand = (char**) realloc(*parsedCommand, sizeof(char*)*(argc+1));
        if (*parsedCommand == NULL)
        {
            printf("fatalError ");
            exit(-1);
        }
        (*parsedCommand)[argc] = strdup(splittedPart);

        if ((*parsedCommand)[argc] == NULL)
        {
            printf("fatalError ");
            exit(-1);
        }

        splittedPart = strtok (NULL, splitCaracter);

        argc++;
    }

    free(copyOfmyString);
    return argc;
}

当我尝试用 "ls | ls" 之类的 2 arg 拆分字符串时出现分段错误,第一个 ls 在选项卡中存货很好,但对于第二个,我们在 strdup(分割部分)。

我希望你能理解我的英语,我不是很擅长。 谢谢

编辑:我忘了我用 :

调用函数
char ** cmd_membres = NULL;
split(&cmd_membres, "|", chaine);

您 运行 遇到了优先错误; *parsedCommand[argc] 被解释为 *(parsedCommand[argc]) 而不是您想要的 (*parsedCommand)[argc].