[size=medium]問題:如何處理如下的命令列引數[/size]
sign file1 [file2 file3 ...] [-o output] [-k key]
至少提供乙個檔案供程式處理,可選擇提供-o, -k選項,一旦提供,必須提供對應引數
[size=medium]基本思路是利用getopt函式解析argv[/size]
[size=medium]標頭檔案:[/size]#include
[size=medium]函式宣告:[/size]int getopt(int argc, char * const argv, const char *optstring);
例如optsring="ab:c::"
表示-a不加引數, -b必須代引數 -c可選是否帶引數
[size=medium]getopt() 所設定的全域性變數包括[/size]:
optarg——指向當前選項引數(如果有)的指標。
optind——再次呼叫 getopt() 時的下乙個 argv 指標的索引。
gnu的getopt會對argv排序,其餘引數在argv[optwind]與argv[argc-1]之間。
optopt——最後乙個已知選項。
#include
#include
int main(int argc, char *argv)
}//計算其他引數
num_file=argc-optind;
if(num_file<1)
//顯示其他引數
for (i=0; i < num_file; i++)
printf("private key file: %s\n", privkey_file);
printf("output signature file: %s\n", sig_file);
return 0;
}
輸入:
$ ./arg file1 file2 -o ooo -k kk
結果:
file 1 to sign: file1
file 2 to sign: file2
private key file: kk
output signature file: ooo
ps:
[size=medium]main函式的argc至少為1,如果為1,說明程式名後不帶命令列引數
argv[0]是啟動該程式的程式名
argv[argc]為空指標[/size]
例如:
echo hello
的argv[0]="echo", argv[1]="hello", arg[2]=null
命令列引數處理
url url include include include include include struct student optsting是選項引數組成的字串,字元後跟乙個冒號,表明該選項要求有引數。static const char optstring i n h?option結構稱為長選項表...
google gflags命令列引數處理(c )
它可以直接從命令列中提取預定義好的引數。例子 test.cpp include 三個引數 1.定義的引數名 2.預設值 3.提示語句 define string query,the keyword you need to query define uint64 search type,0,it is...
python命令列引數處理
本篇將介紹python中sys,getopt模組處理命令列引數 如果想對python指令碼傳引數,python中對應的argc,argv c語言的命令列引數 是什麼呢?需要模組 sys 引數個數 len sys.argv 指令碼名 sys.argv 0 引數1 sys.argv 1 引數2 sys....