getopt 函式的用法

2021-06-08 08:07:10 字數 1600 閱讀 5203

另外apue的p619有解釋!

通常 linux 下的各種命令都有許多的命令列引數可以選擇,比如:

gcc -g -lm foo.c -o foo 

getopt()就是用來分析命令列引數的函式。

在繼續討論getopt 之前,先要明確兩個概念:選項(option) 和 選項引數(argument)。

在上面的例子中,-g 中的 g,-o 中的 o 還有 -lm 中的 l 就是選項,而 -lm 中的 m 就是 l 的選項引數,-o foo 中的 foo 就是 o 的選項引數。

因此,我們知道了選項有兩種,一種是帶選項引數的,另一中是不帶選項引數的。下面我們就可以繼續討論 getopt() 了。

getopt(分析命令列引數)

相關函式

表頭檔案 #include

定義函式 int getopt(int argc,char * const argv[ ],const char * optstring);

extern char *optarg;

extern int optind, opterr, optopt;

函式說明 getopt()用來分析

命令列引數。

引數argc和argv是由main()傳遞的引數個數和內容。

引數 optstring為選項字串, 告知 getopt()可以處理哪個選項以及哪個選項需要引數,如果選項字串裡的字母後接著冒號「:」,則表示還有相關的引數,全域變數optarg 即會指向此額外引數。如果在處理期間遇到了不符合optstring指定的其他選項getopt()將顯示乙個錯誤訊息,並將全域變數optarg設為「?」字元,如果不希望getopt()印出錯資訊,則只要將全域變數opterr設為0即可。

getopt() 所設定的全域性變數包括:

optarg——指向當前選項引數(如果有)的指標。

optind——再次呼叫 getopt() 時的下乙個 argv 指標的索引。  

optopt——最後乙個已知選項。

補充說明下optstring中的指定的內容的意義(例如getopt(argc, argv, "ab:c:de::");

1.單個字元,表示選項,(如上例中的abcde各為乙個選項)

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

3 單個字元後跟兩個冒號,表示該選項後必須跟乙個引數。引數必須緊跟在選項後不能以空格隔開。該引數的指標賦給optarg。(如上例中的e::)

範例

#include<

stdio.h

>

#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

option a:』12345』

函式getopt的用法

函式getopt 用來分析命令列引數,其函式原型和相關變數宣告如下 int getopt int argc,char const argv,const char optstring extern char optarg extern int optind,初始化值為1,下一次呼叫getopt時,從o...

python函式getopt用法

python內建模組,用來處理命令列引數 格式 getopt args,shortopts,longopts 引數args一般是sys.ar 1 sys.ar 0 表示執行檔案本身 shortopts 短格式 longopts 長格式 命令列中輸入 python test.py i 127.0.0....

C語言中getopt 函式的用法

getopt函式用來解析命令列選項,宣告所在標頭檔案為 include 函式原型如下 int getopt int argc,char const ar const char optstring 第乙個引數argc是引數個數,和main函式的argc一樣 第二個引數ar 是字串指標,和main函式的...