另外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函式的...