2012-08-17 57 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