我的問題是基於前一個問題的詢問çoptget有多個值是如何工作的:C getopt multiple value比方追查
就我而言,我只有一個參數-i
,這是可選的。用戶必須使用此語法:
/a.out -i file1 -i file2 -i file3
如果用戶不提供-i
標誌,程序運行正常。用戶可以提供無限數量的文件作爲可選參數,例如,
/a.out -i file1 -i file2 -i file3 -i file4 -i file5 ...
我這個getopt()
開始while語句在main()
:
char *input; // ?? Now syntactically correct, but uninitialized?
while ((opt = getopt(argc, argv, "i:"))!= -1){
case 'i':
if (optarg == NULL){
input = NULL;
}
else{
strcpy(input, optarg);
break;
...
}
然後我會通過這些可選參數的函數:
function1(char *required_arg, ...)
在上述的情況下,將是:
function1(required_arg, file1, file2, file3, file4, file5)
目前,我將input
定義爲「文件」。我的問題是,如何跟蹤任意數量的可選參數以便稍後傳入函數?上面的代碼是錯誤的,因爲我正在爲每個-i
參數傳遞重新定義input
。
用什麼數據結構?
你可以傳遞參數數組(您可以將它們存儲在一個陣列) – coderredoc
@coderredoc我將如何計算的,通過'傳遞的參數長度i'?也就是說,在上面有5個文件 – ShanZhengYang
如果我錯了,糾正我 - 你想從選項'-i file1 -i file2'中得到你得到的文件的名字,然後你想把它們傳遞給其他方法。現在你的問題是你如何將它們傳遞給其他方法? – coderredoc