getopt 對命令列引數進行分析

2021-09-01 07:56:56 字數 1056 閱讀 5559

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" -e 

a (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迴圈中...