argc
говорит вам размер argv
Вам нужно извлечь их из argv
, используя эту информацию.
Обратите внимание, что это не решает проблему команд с различным количеством аргументов.
Изменить по этой причине в ответ на комментарии:
Вы можете посмотреть на getopt()
, который позволит вам сделать это:
./program -c "command arg1 arg2" -c "command arg1" ...
Проблема в том, что вам нужно различать наборы команд / аргументов. getopt()
по крайней мере приведет вас на полпути, тогда вам просто нужно разобрать каждый набор. Хотя это действительно излишне, поскольку это ваш единственный тип ввода. Итерация по argv
будет в этом случае такой же простой.
Другой вариант - разделить их разделителем:
./program command arg1, command arg1 arg2, ...
Вам нужно будет перебрать argv
и найти запятую, чтобы узнать, что набор команд / аргументов завершен. Или объедините все аргументы argv в строку и используйте strtok()
. Вроде некрасиво ИМХО но выполнимо.