在 C 语言中实现 Split 函数,重新分配不起作用



我尝试实现一个拆分函数来像在 Java 中那样使用caracter拆分字符串。但是我的函数需要在具有 2 个维度的选项卡中存储拆分的字符串(选项卡在参数中)。我的函数需要返回 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;
}

当我尝试拆分带有 2 个参数的字符串时,我遇到了分段错误,例如"ls |ls",第一个 ls 在选项卡中库存良好,但对于第二个,我们在 strdup(splittedPart) 处进行了分割

我希望你理解我的英语,我不太擅长。感谢。

编辑:我忘了我用:

char ** cmd_membres = NULL;
split(&cmd_membres, "|", chaine);

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

相关内容

  • 没有找到相关文章

最新更新