如何找出传递的参数数量

时间:2013-04-27 15:04:13

标签: c linux unix

我正在Linux上编写一些C代码。我想循环传递给main的* argv []参数,但我不知道在获得seg错误之前如何停止。

  i = 0;
  while (i < sizeof(argv)) {
    printf("%s\n", argv[i]);
    i ++;
  }

这会产生一个seg错误,因为sizeof总是返回8.如何获取argv中的实际元素数,或者在argv结束时应用某种类型的测试?

3 个答案:

答案 0 :(得分:2)

main的第一个参数是argc,它是传递给程序的参数数量。这至少是1,这是可执行文件的名称。

#include <stdio.h>

int main(int argc, char *argv[])
{
  printf("%d\n", argc);
  return 0;
}

调用为:

$ ./a.out 
1
$ ./a.out 1 2 3 4
5
$ ./a.out 1 2 3
4

答案 1 :(得分:1)

第一个参数.. argc应该已经有CLI参数计数。为什么没有使用它?

int main(int argc, char** argv)
{
    if(argc > 1)
 }

答案 2 :(得分:0)

argc包含argv中的参数计数。