命令列引數解析函式getopt long

2021-06-08 08:30:25 字數 1177 閱讀 3345

#include

int getopt_long(int argc, char * const argv,

const char *optstring,

const struct option *longopts, int *longindex);

getopt被用來解析命令列選項引數。

getopt_long支援長選項的命令列解析,使用man getopt_long,得到其宣告如下:

int getopt_long(int argc, char * const argv,const char *optstring, const struct option *longopts,int *longindex);

函式中的argc和argv通常直接從main()的兩個引數傳遞而來。optsting是選項引數組成的字串:

字串optstring可以下列元素:

1.單個字元,表示選項,

2.單個字元後接乙個冒號:表示該選項後必須跟乙個引數。引數緊跟在選項後或者以空格隔開。該引數的指標賦給optarg。

3 單個字元後跟兩個冒號,表示該選項後必須跟乙個引數。引數必須緊跟在選項後不能以空格隔開。該引數的指標賦給optarg。(這個特性是gnu的擴張)。

optstring是乙個字串,表示可以接受的引數。例如,"a:b:cd",表示可以接受的引數是a,b,c,d,其中,a和b引數後面跟有更多的引數值。(例如:-a host --b name)

引數longopts,其實是乙個結構的例項:

struct option

給個例子:

static const char short_options = "d:hmru";

static const struct option

long_options = ,,,

,,};int main(int  argc, char **argv)

}   現在,如果命令列的引數是-d 123,那麼呼叫getopt_long()將返回字元'd',並且將字串123由optarg返回(注意注意!字串123由optarg帶回!optarg不需要定義,在getopt.h中已經有定義),那麼,如果命令列引數是-h,那麼呼叫getopt_long()將返回字元'h',而此時,optarg是null。最後,當getopt_long()將命令列所有引數全部解析完成後,返回-1。

getopt函式,命令列解析

getopt函式 函式功能 用來解析命令列引數,引數argc和ar 分別代表引數個數和內容,跟main 函式裡的命令列引數一樣 函式所在標頭檔案 include 函式原型定義 int getopt int argc,char const ar const char optstring 引數optst...

使用getopt解析命令列引數

python中可以使用getopt來解析命令列引數,其定義如下 getopt args,shortopts,longopts 其中,getopt返回opts,args元組,opts是根據shortopts,longopts引數解析出來的 key,value 列表,而其他剩餘引數就會放到args列表中...

Linux命令列解析函式getopt

include include int main int argc,char argv return 0 a.out a x a,no opt a.out a b x a,no opt b,opt x a.out ab x c xx a,no opt b,opt x c,opt xx應緊跟c後面 a...