2012-08-17 54 views
2

因此,我發現自己希望能夠通過va_list迭代命令行參數,我相信我已經看到它在某個地方完成了。我該如何迭代命令行參數與va_list中的C

我試過Google搜索無濟於事。

有誰知道如何做到這一點或知道它是否可以實現?

+10

有沒有原因'argc'和'argv'不足? – hmjd 2012-08-17 16:28:41

+0

我有一種感覺@ hmjd的建議是有點回答 – 2012-08-17 16:30:23

+0

爲什麼這應該比簡單的'for'循環更好? – 2012-08-17 18:38:18

回答

8

你不能。 va_list適用於可變參數功能,其中main不適用。不過,我想知道的是你爲什麼會喜歡這個(如果可能):

char *arg; 
va_list vl; 
va_start(vl, argc); 
while ((arg = va_arg(vl, char*))) 
    // use arg 
va_end(vl); 

這樣:

for (int i = 0; i < argc; ++i) 
    // use argv[i] 

或本:

for (char **arg = argv; *arg; ++arg) 
    // use *arg