C處理命令列引數示例

2021-08-30 22:55:18 字數 1422 閱讀 6610

[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....