C - 将可变数量的参数传递给main

时间:2013-09-16 22:51:58

标签: c linux arguments main

我不确定这是否是正确的方法。请参阅下面的代码。 我希望能够将一个参数列表传递给main,然后将其存储在另一个数组中。

所以,我想要用至少一个参数来启动程序......或者我喜欢的参数多。我可能会将最大参数设置为32。

例如

./ foo 3

./ foo 3 56 12 34 56 111 2222 33

#include <stdio.h>
#include <stdlib.h>


int main(int argc, char *argv[])
{
    int i;
    int     numbersEntered[argc];


    if (argc <= 1){
            printf("Not enough arguments entered\n");
            exit(1);
    }
    printf("Arg count  %i\n",argc-1);


    for (i=1;i<argc;i++)
            numbersEntered[i]=atoi(argv[i]);
    for (i=1;i<argc;i++)
            printf(" numbersEntered %i\n", numbersEntered[i]);

}

1 个答案:

答案 0 :(得分:2)

已经是这种情况,argv是一个指针数组,命令行上每个参数的一个指针(加上两个,实际上,第一个是程序的名称,然后是参数,以及然后终止NULL指针。

关于数组,问题是传统的C需要在编译时已知的大小,你不能只使用argc;也就是说,像GCC这样的一些编译器以及更新的C标准确实允许它。