В соответствии с manual и getopt_long() -- proper way to use it? каждый аргумент проходит в одном значении, которое передается через optarg.
Похоже, что вам нужно использовать optarg для первого аргумента и указателя, который используется getopt()
, в качестве указателя и strlen (optarg) для указания после аргумента. Затем (когда вы находитесь в --i) проверьте, будет ли следующая строка аргументом или следующей опцией. Если это следующий вариант, выведите ошибку с ошибкой. Если это второй аргумент, поднимите его.
Возможно, вам придется использовать переменную optind
и указать на argv [optind], чтобы выполнить обработку.
Однако, это не может работать, потому что
По умолчанию getargs() переставляет содержимое ARGV, как он сканирует, так что в конце концов все не-опции в конце.
get_opt()
должен пропустить этот второй аргумент, однако, я не уверен (основано на чтении руководства), если он пропускает его или сохранить его для последующего использования. При написании кода вам нужно будет проверить вывод отладки. У меня нет времени, чтобы написать тест для этого.
короткий ответ нет. – isedev
Спасибо, я найду другой путь! –
Добавлен ответ с каким может быть способ справиться с этим. – sabbahillel