詳細解析命令列的getopt long 函式

2022-10-04 04:48:08 字數 2162 閱讀 4456

標頭檔案

#include

函式原型

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

函式說明

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

getopt_long支援長選項的命令列解析,函式中的引數argc和ar**通常直接從main()的兩個引數傳遞而來。optstring是選項引數組成的字串。

字串optstring可以下列元素:

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

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

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

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

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

複製** **如下:

struct option

給個例子:

複製** **如下:

struct option long_options = , , }

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

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

複製** **如下:

struct option

給個例子:

複製** **如下:

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。

範例複製** **如下:

#include

#include

char *l_opt_arg;

char* const short_options = "nbl:";

struct option long_options = ,

, ,

, };

int main(int argc, char *ar**) }

return 0;

} [root@localhost wyp]# gcc -o getopt getopt.c

[root@localhost wyp]# ./getopt -n -b -l forever

my name is xl.

his name is st.

our love is forever!

[root@localhost liuxltest]#

[root@localhost liuxltest]# ./getopt -nb -l forever

my name 程式設計客棧is xl.

his name is st.

our love is forever!

[root@ltlmygcelocalhost liuxltest]# ./getopt -www.cppcns.comnbl forever

my name is xl.

his name is st.

our love is forever!

本文標題: 詳細解析命令列的getopt_long()函式

本文位址:

命令列解析

不想自已分析命令列的話也可以 lpwstr lpwargv lpwargv commandlinetoargvw getcommandlinew dwcount dwcount的值即為命令列引數的個數 像控制台程式一樣,引數也包括本執行檔案的全路徑 lpwargv為乙個lpwstr 的指標,需要按如...

解析命令列引數

include include include include int make argv const char astr,const char delimiters,char argvp void free argv char argvp int main int argc,char argv i...

ACE Get Opt解析命令列

ace get opt 類可以解析兩種命令列選項 a 簡單的單字元單選項,以單短劃線 開頭 b 長選項,以雙短劃線 開頭 比如 prefix ace get opt類的例項使用operator 來迭代命令列選項 如果遇到單選項字元時,它直接返回該字元 如果遇到長選項時,它返回與該長選項等價的短選項字...