C, Как указать optstring в функции getopt?
Я не уверен, как правильно использовать optstring
в функции getopt
в C.
Как форматировать эту строку? Я видел примеры, где буквы рядом друг с другом, иногда разделенные точкой с запятой, иногда двумя точками с запятой.
Что это значит?
Ответы
Ответ 1
Это просто строка, и каждый символ этой строки представляет опцию. Если для этой опции требуется аргумент, вы должны следовать за символом опции :
.
Например, "cdf:g"
принимает опции c
, d
, f
и g
; f
требует дополнительного аргумента.
Опция в командной строке выглядит как -option
, поэтому вы можете использовать опции -c
, -d
, -f argument
и -g
.
Ответ 2
Маска страницы getopt(3)
делает это довольно ясным:
- сама строка используется для указания юридических параметров, которые могут отображаться в командной строке,
- если за опцией следует
:
, тогда этот параметр имеет требуемый параметр - не указывая, что это приведет к сбою функции,
- если за опцией следует
::
, то этот параметр имеет необязательный параметр.
Параметры - это однобуквенные идентификаторы. Например, указание строки типа aB:cD::
в качестве optstring
будет означать, что ваша программа принимает параметры a
, B
с обязательным параметром c
и D
с необязательным параметром.
Ответ 3
Если для двоеточия :
следует char или строка означает, что эта опция должна требовать аргумент
и если нет двоеточия, нет аргументов
для более подробной информации man 3 getopt
или посетите ссылку или manpage