getopt long 函式詳解

2021-08-07 12:24:43 字數 1343 閱讀 1635

檔案

#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 *flag);

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

字串optstring可以下列元素:

1.單個字元,表示選項

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

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

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

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

struct option

引數flag,表示當前長引數在longopts中的索引值

給個例子:

struct option long_options = ,,}

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

注意

required_argument(或者是1)時,引數輸入格式為:--引數 值 或者 --引數=值。

optional_argument(或者是2)時,引數輸入格式只能為:--引數=值。

getopt long 函式的作用

linux系統下,需要大量的命令列選項,如果自己手動解析他們的話實在是有違軟體復用的思想,不過還好,gnu c library留給我們乙個解析命令列的介面 x open規範 好好使用它可以使你的程式改觀不少。使用getopt long 需要引入標頭檔案 include 現在我們使用乙個例子來說明它的...

getopt函式和getopt long函式

預備知識 1.getopt getopt在unix下的命令列程式特別好用,特別是在你有許多引數要加入時。表頭檔案 i nclude 函式宣告 int getopt int argc,char const argv,const char optstring 函式說明 getopt 用來分析命令列引數。...

getopt和getopt long函式使用詳解

getopt和getopt long函式使用詳解 在我們操作命令行的時候,main函式中輸入引數乙個乙個分析不免麻煩,我們可以使用linux的引數分析函式解決此問題方便省力。include int getopt int argc,char const argv,const char optstrin...