Linux -- C語言中的命令列解析函式getopt()
阿新 • • 發佈:2020-10-13
#include <unistd.h>//標頭檔案
int getopt(int argc, char * const argv[ ], const char * optstring);//函式宣告
agrc, argv[] —main()函式傳遞過來的函式
optstring: 一個包含準確選項字元的字串
返回值: 返回下一個選項, 當沒有引數的最後一次呼叫時, getopt()將返回 -1;當解析到一個不在optstring裡面的引數, 或者一個必選值引數不帶值時, 返回“ ?”。當optstring時以:開頭時, 缺值引數的情況下會返回":", 而不是“ ?”
extern char *optarg; —指向當前選項引數(如果有)
int opterr — 這個變數非零時, 向stderr列印錯誤。預設為1.
引數optstring詳解
getopt()函式的第三個引數optstring時一個有所有合法的“可選字元”所組成
的字串。
- 單個字元,表示選項
- 單個字元後接一個冒號“:”, 表示該選項後必須跟一個引數值。引數緊跟在選項後或者以空格隔開。該引數的指標賦給optarg。
- 單個字元後跟兩個冒號“ ::”, 表示該選項後可以帶引數也可以不帶。但引數必須緊跟在選項後不能以空格隔開。該引數的指標賦給optarg。
例子:”xy:z::“ 表示x選項沒有選項引數,y選項必須有選項引數, 中間可有空格可沒有, z引數可有引數選項, 也可沒有引數選項, 但是如果有選項引數的話必須緊跟在選項之後不能有空格。即
注: 引數不分順序,不帶值的引數可以連寫
例子