Вам нужно выделить память для ваших строк. Следующая строка выделяет num_args
указателей на char
:
char *cmd[num_args];
Прежде всего, вы получите num_args + 1
строк (не забывайте, что сама команда cmd[0]
). Самый простой способ - статически выделить память в виде массива символьных буферов:
const unsigned int MAX_LEN = 512; // Arbitrary number
char cmd[num_args + 1][MAX_LEN];
Однако теперь вы не можете использовать scanf
для чтения в строке, потому что пользователь может ввести строку, которая длиннее, чем ваш символьный буфер. Вместо этого вам придется использовать fgets
, что может ограничить количество символов, которые может ввести пользователь:
fgets(cmd[i], MAX_LEN, stdin);
Имейте в виду, что fgets
также считывает символы новой строки, поэтому обязательно удалите все случайные символы, которые появляются (но не думайте, что они есть).