У вас есть две основные проблемы:
Во-первых, когда вы объявляете свой массив как char *cmd[index];
, размер массива составляет , а не , привязанный к текущему значению index
как index
изменений.Он устанавливает размер на текущее значение index
, равное 0. Создание массива размера 0 вызывает неопределенное поведение .Вам нужно установить фиксированный размер для массива, который будет достаточно большим для ваших нужд.
char *cmd[MAX_LIMIT];
Другая проблема заключается в выборе разделителей.Функция fgets
читает строку текста , включая символ новой строки в конце ввода .Таким образом, любой параметр, который будет считан последним, будет иметь \n
в конце.Чтобы это исправить, добавьте \n
в список разделителей.
char delim[] =" \n";