例項講解getopt 函式的使用

2021-08-01 10:52:51 字數 1070 閱讀 9277

#include #include int main(int argc, char *argv) 

}printf("optopt +%c\n", optopt);//不在選項字串optstring中的選項。找不到引數的case '?'和缺少選項的case ':'的選項

}

函式說明:

#include extern char *optarg;

extern int optind, opterr, optopt;

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

optarg:選項的引數指標

optind:記錄下乙個檢索位置,在getopt的執行中,每次進入都會更新optind變數,該變數指向下乙個argv引數

opterr:是否將錯誤資訊輸出到stderr,為0時表示不輸出

optopt:當命令列選項字元不包括在optstring中或者選項缺少必要的引數時,該選項儲存在optopt中,getopt返回'?』

optstring說明:

"a:b::cde",這就是乙個選項字串。對應到命令列就是-a ,-b ,-c ,-d, -e 。冒號又是什麼呢? 冒號表示引數,乙個冒號就表示這個選項後面必須帶有引數,如果optstring中指定了option需要引數,但在命令列沒有引數,那麼getopt將返回'?',如果在optstring的第乙個字元(或者在第乙個字元是+/-之後)是':',那麼將返回':',這個引數可以和選項連在一起寫,也可以用空格隔開,比如-a123 和-a   123(中間有空格) 都表示123是-a的引數;兩個冒號的就表示這個選項的引數是可選的,即可以有引數,也可以沒有引數,若有引數,optarg指向該該引數,否則optarg為null,但要注意有引數時,引數與選項之間不能有空格(有空格會報錯),這一點和乙個冒號時是有區別的。

傳入的'-'開始的字元被解析為選項,getopt一次執行解析出乙個option,如果迴圈執行,可以將argv中的全部option解析出來,如getopt返回-1,表示argv中的所有選項被解析出。

getopt函式的使用和例項

在 a a arg b b arg c 中,選項 a,b,c 引數 a arg,b arg 呼叫形式 getopt argc,argv,ab c 找了一遍以後返回 1,因此最後總是會返回 1的。a 選項a後面有引數,可以用乙個或者多個空格隔開,也可以不用空格,緊跟著a。即 a a arg 或者 aa...

getopt 函式的使用

每一天你都在使用大量的命令列程式,是不是感覺那些命令列引數用起來比較方便,他們都是使用getopt來實現的。在linux下使用getopt寫程式是一種比較方便的事情,下面來簡單的介紹一下getopt的使用。在討論引數處理之前,我們先明確兩個概念 選項 選項引數 gcc g o test test.c...

getopt函式的使用

include int getopt int argc,char const argv,const char optstring 這是getopt函式的原型 函式用來分析命令列引數,有三個引數,argc表示引數個數,argv表示引數內容,optstring表示可選選項,重點就在於optstring的...