-3

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

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

这会产生 seg 错误,因为 sizeof 总是返回 8。如何获取 argv 中的实际元素数,或者应用某种测试在 argv 末尾停止?

4

3 回答 3

3

第一个参数..argc 应该已经有 CLI 参数计数..有什么理由不使用它?

int main(int argc, char** argv)
{
    if(argc > 1)
 }
于 2013-04-27T15:06:14.400 回答
3

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
于 2013-04-27T15:06:28.300 回答
1

argc 包含 argv 中的参数计数。

于 2013-04-27T15:06:11.570 回答