【发布时间】:2013-09-21 05:29:55
【问题描述】:
我不确定这是否是正确的方法。请参阅下面的代码。 我希望能够将参数列表传递给 main,然后将其存储在另一个数组中。
所以,我想用至少 1 个参数启动程序……或者我喜欢的尽可能多的参数。我可能会将最大参数数量设置为 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 输入的数字?您未初始化 numbersEntered[0]。
-
上面的代码确实有效(在 Raspberry Pi 上)。但是,我正在努力确保我做得正确。因为我使用 argc 来指定数组 'numbersEntered[argc]' 的大小......我一直读到你必须在声明它时指定数组大小。
-
@Troy 因为
argv[0]只是程序名称;第一个参数是argv[1]。