我不确定这是否是正确的方法。请参阅下面的代码。我希望能够将参数列表传递给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 enteredn");
exit(1);
}
printf("Arg count %in",argc-1);
for (i=1;i<argc;i++)
numbersEntered[i]=atoi(argv[i]);
for (i=1;i<argc;i++)
printf(" numbersEntered %in", numbersEntered[i]);
}
已经是这种情况了,argv
是一个指针数组,命令行上的每个参数都有一个指针(加上两个,实际上,第一个是程序的名称,然后是参数,然后是终止 NULL 指针)。
关于数组,问题是传统的C需要一个在编译时已知的大小,你不能只使用argc
;也就是说,一些编译器,如GCC,以及最近的C标准,确实允许它。