getopt和getopt_long

getopt和getopt_long函數

1.介紹getopt

int getopt(int argc, char * const argv[],  
           const char *optstring);  

getopt函數的前兩個參數,就是main函數的argc和argv,這兩者直接傳入即可,要考慮的就只剩下第三個參數。
optstring的格式舉例說明比較方便,例如:
char *optstring = “abcd:”;
上面這個optstring在傳入之後,getopt函數將依次檢查命令行是否指定了 -a, -b, -c及 -d(這需要多次調用getopt函數,直到其返回-1),c才能檢查完所有你輸入的參數。因爲每次檢查一個參數,當檢查到上面某一個參數被指定時,函數會返回被指定的參數名稱(即該字母)
最後一個參數d後面帶有冒號,代表可以加指定的參數,如 -d 10086
optind表示的是下一個將被處理到的參數在argv中的下標值。
如果指定opterr = 0的話,在getopt、getopt_long遇到錯誤將不會輸出錯誤信息到標準輸出流。

代碼和運行結果:
這裏寫圖片描述

這裏寫圖片描述

2介紹getopt_long函數

int getopt_long(int argc, char * const argv[],  
           const char *optstring,  
           const struct option *longopts, int *longindex);  

2.1
在這裏第一個多餘的參數:longopts指向的是一個由option結構體組成的數組,這是已經定義好的,你動態調用就行。
結構如下:

struct option {
               const char *name;
               //是參數的名稱
               int         has_arg;
               //無參0有參1都行2
               int        *flag;
               //flag = 0函數返回val
               int         val;
               //指定函數找到選項時候的番薯返回值或者flag指向的值
           };

2.2
如果longindex不爲,0,,即是找到參數在longopts中的下標值。
代碼:
這裏寫圖片描述
結果:
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章