getopt() 對命令列引數進行分析
int getopt( int argc, char *const argv, const char *optstring );給定了命令引數的數量 (
argc
)、指向這些引數的陣列 (argv
) 和選項字串 (optstring
) 後,getopt()
將返回第乙個選項,並設定一些全域性變數。使用相同的引數再次呼叫該函式時,它將返回下乙個選項,並設定相應的全域性變數。如果不再有識別到的選項,將返回-1
,此任務就完成了。可以重複呼叫getopt()
,直到其返回-1
為止.
getopt()
所設定的全域性變數包括:
其中 optstring 書寫格式如下: "f:e:ac" , 其中':'表示前乙個字元是帶引數的
例子:
#include #include #include int main(int argc, char *argv)}}
需要注意的是:
變數 optind, optopt, opterr,
optarg 都是全域性變數, 外部引用, 定義時都需要加"extern"
"f:e:a"表示-f和-e有引數, -a沒有引數, 編譯為test,並測試
# ./test -a 'abc' -f "abc" -e 'abc'a (null)
f abc
e abc
# ./test -a 'abc' -f "abc" -ea (null)
f abc
option -e requires an argument.
不過, 這樣的**還在存在問題,假如" -f"後面缺少引數, 它會誤把"-e"當作"-f"的引數
# ./test -a 'abc' -f -e "abc"a (null)
f -e
使用getopt解析命令列引數
python中可以使用getopt來解析命令列引數,其定義如下 getopt args,shortopts,longopts 其中,getopt返回opts,args元組,opts是根據shortopts,longopts引數解析出來的 key,value 列表,而其他剩餘引數就會放到args列表中...
分析命令列引數 getopt函式
include include int main int argc,char argv printf optopt c n optopt getopt b option b b getopt c other option c getopt a other option getopt a12345 o...
使用系統呼叫getopt簡化對命令列引數的解析
有關系統呼叫getopt 宣告 cpp include int getopt int argc,char const argv,const char optstring extern char optarg extern int optind,opterr,optopt 使用方法 在while迴圈中...