我遇到了getopt
問題。在我的程序中,我希望使用以下選項運行該程序:-l -w -n -b
。 n
和b
是可選的,但程序必須有l
或w
,而不是兩者。另外,如果調用w
,則必須緊跟一個參數。此外,訂單應該是l
或w
第一,然後是n
或b
,其順序無關緊要。getopt中的選項順序問題
以下是有效的論據例子:
./prog -l -n -b
./prog -w argument -b -n
./prog -l -n
./prog -l -b
這些例子是無效的:
./prog -l -w argument
./prog -n -l
./prog -b -l
基於這些要求,我已經使用getopt的有問題。當然,我可以使用大量的if else語句,但這會很難看,也不必要的複雜。
具體而言,我遇到了參數的順序問題,並且使-l
和-w
選項成爲一種關係。
這是我到目前爲止,雖然它不是很多,因爲這些不確定性。
while ((option = getopt(argc, argv,"lw:nb:")) != -1) {
switch(option) {
case'l': ... // I haven't wrote anything here yet
case'w': ...
case'n': ...
case'b': ...
case '?': ...
default: ...
}
}
你能告訴我們你到目前爲止試過的嗎? – larsks 2015-02-05 22:12:02
當然,我會發布我迄今爲止所擁有的。 – mrQWERTY 2015-02-05 22:12:32
請注意這個問題[我可以使用'getopt()'按特定順序處理選項嗎?](http://stackoverflow.com/questions/26473642/can-i-use-getopt-to-process-options-in -a-certain-order),但答案只與下面的答案兼容 - 它沒有詳細說明,也不包含代碼段。 – 2015-02-05 23:41:06