在c程式應用程式執行的時,常常配有一些引數,如果引數少我們可以使用arvg,arvc來實現,如果引數很多並且需要傳入引數複雜我們可以使用strcut option 來實現。
struct option
原型:
intgetopt_long(intargc, char * constargv[] , const char*optstring, const struct option*longopts, int *longindex);
1.argc和argv和main函式的兩個引數一致。
2.*optstring可以下列元素:
形式如「a:b::cd:「,分別表示程式支援的命令列短選項有-a、-b、-c、-d,冒號含義如下:
(1)只有乙個字元,不帶冒號——只表示選項, 如-c
(2)乙個字元,後接乙個冒號——表示選項後面帶乙個引數,如-a 100
(3)乙個字元,後接兩個冒號——表示選項後面帶乙個可選引數,即引數可有可無,如果帶引數,則選項與引數直接不能有空格形式應該如-b200
optstring是乙個字串,表示可以接受的引數。例如,"a:b:c:d:",表示可以接受的引數是a,b,c,d,其中,a和b引數後面跟有更多的引數值。(例如:-a host -b name);
3.引數longopts,其實是乙個結構的例項:
struct option
; eg:
static struct option longopts = ,,,
,};
(1)name:表示選項的名稱,比如daemon,dir,out等。
(2)has_arg:表示選項後面是否攜帶引數。該引數有三個不同值,如下:
a: no_argument(或者是0)時 ——引數後面不跟引數值,eg: --version,--help
b: required_argument(或者是1)時 ——引數輸入格式為:--引數 值 或者 --引數=值。eg:--dir=/home
c: optional_argument(或者是2)時 ——引數輸入格式只能為:--引數=值
(3)flag:這個引數有兩個意思,空或者非空。
a:如果引數為空null,那麼當選中某個長選項的時候,getopt_long將返回val值。
eg,可執行程式 --help,getopt_long的返回值為h.
b:如果引數不為空,那麼當選中某個長選項的時候,getopt_long將返回0,並且將flag指標引數指向val值。
eg: 可執行程式 --http-proxy=127.0.0.1:80 那麼getopt_long返回值為0,並且lopt值為1。
(4)val:表示指定函式找到該選項時的返回值,或者當flag非空時指定flag指向的資料的值val。
4.flag :表示當前長引數在longopts中的索引值
C 特殊函式和成員
物件成員的初始化 可以在乙個類中說明具有某個類的型別的資料成員,這些成員成為物件成員。在類a中說明物件成員的一般形式如下 class a 說明物件成員是在類名之後給出物件成員的名字。為初始化物件成員,a類的建構函式需要呼叫這些物件成員所在的類的建構函式,a類的建構函式的定義形式如下 a a 參數列 ...
C 特殊字元過濾函式
using system using system.collections.generic using system.text using system.text.regularexpressions 對字串進行檢查和替換其中的特殊字元 public static string htmltotxt ...
c 特殊建構函式詳解
目錄 眾所周知,建構函式的作用是類在建立物件時的初始化,而拷貝建構函式則是建構函式裡的一種特殊構造。拷貝構造 是c 特有的,他是一種特殊的建構函式 程式設計客棧用於基於乙個同乙個類的的第乙個物件去創造和初始化的乙個物件 第一的引數是本類的物件的引用 const 一種特殊的建構函式,同乙個類的乙個物件...