getopt函式
函式功能:用來解析命令列引數,引數argc和argv分別代表引數個數和內容,跟main()函式裡的命令列引數一樣
函式所在標頭檔案:#include
函式原型定義:int getopt(int argc, char* const argv[ ], const char *optstring )
引數optstring: 為選項字串,告知getopt可以處理那個選項以及哪個選項需要引數,如果選項字串裡的字母後接著冒號:「:」,則表示還有相關的引數,全域變數optarg即會指向此額外引數,如果在處理期間遇到了不符合optstring指定的其他選項,getopt()將會顯示乙個錯誤訊息,並將全域性域變數設定為「?」字元,將全域性域變數opterr設定為0則將不會列印出錯資訊。
extern char* optarg;
extern int optind, opterr, optopt;
引數optarg:指向當前選項引數的指標
引數optopt:表示最後乙個未知選項
引數optstring: 比如getopt(argc, argv, "td:ch:q::")
1. 單個字元,表示選項,這裡一共有t、d、c、h、q五個選項
2. 單個字元後接乙個冒號「:」表示該選項後必須跟乙個引數,引數緊跟在選項後或者以空格隔開
3. 單個字元後跟兩個冒號,表示該選項後可以跟乙個引數,也可以不跟,如果後邊跟乙個引數,引數必須緊跟在選項後不能以空格隔開。
#include #includeint main(int argc, char *argv) }
return 0;
}
筆記本測試效果截圖:
getopt_long函式
函式功能:支援長選項的命令解析
函式所在標頭檔案:#include
函式原型定義:
int getopt_long(int argc, char * const argv,const char *optstring, const struct option *longopts,int *longindex)
引數optstring: 為選項字串,告知getopt_long可以處理那個選項以及哪個選項需要引數,如果選項字串裡的字母後接著冒號:「:」,則表示還有相關的引數,全域變數optarg即會指向此額外引數,如果在處理期間遇到了不符合optstring指定的其他選項,getopt_long()將會顯示乙個錯誤訊息,並將全域性域變數設定為「?」字元,將全域性域變數opterr設定為0則將不會列印出錯資訊。
引數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。
required_argument(或者是1)時,引數輸入格式為:--引數 值 或者 --引數=值。
optional_argument(或者是2)時,引數輸入格式只能為:--引數=值。
引數longindex: 表示當前長引數在longopts中的索引值
extern char* optarg;
extern int optind, opterr, optopt;
引數optarg:指向當前選項引數的指標
引數optind:再次呼叫getopt_long時的下乙個argv指標索引
引數optopt:表示最後乙個未知選項
引數optstring: 同上
具體用法可以詳見開源原始碼研究:
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...
getopt函式分析
函式getopt主要用於拆分命令列引數,用這個函式就不自己寫命令列引數解析程式了,以下 摘自tcpdump原始碼,對這個函式比較感興趣,故對此進行分析注釋,因水平實在不敢恭維,不足之處希望能一起 函式getopt 有三個引數,nargc,nargv就是命令列傳過來的argc和argv字串ostr,它...