Реализация функции Split в C, перераспределение не имеет эффекта
Я пытаюсь реализовать функцию разделения, чтобы разделить строку с символом, как в Java. Но моя функция должна хранить разделенную строку во вкладке с 2 измерениями (вкладка находится в параметрах). И моей функции нужно возвращать числа арг.
Поэтому я передаю адрес 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);
1 ответ
Вы столкнулись с ошибкой приоритета; *parsedCommand[argc]
интерпретируется как *(parsedCommand[argc])
вместо того, что выглядит так, как вы хотите, (*parsedCommand)[argc]
,