命令行参数以C计

时间:2013-05-27 16:58:11

标签: c command-line-arguments

我在C中编写了这个程序,它接受命令行参数并将其与参数计数一起显示。但是这个论点不仅仅是键入的参数数量。

#include<stdio.h>
 void main(int argc, char *argv[])
 {
 int i=0;
 for(i=0;argv[1][i]!='\0';i++)
 {
  if(argv[1][i]>='a' && argv[1][i]>='z')
  {
   argv[1][i]=argv[1][i];
  }
   }
  printf("%s",argv[1]);
  printf("\n");
  printf("%d",argc);
 }

我通过的论点:上层abracadabra。它给了我一个计数为3.任何理由。提前致谢

4 个答案:

答案 0 :(得分:4)

请记住,C数组是从零开始的,因此有效索引运行[0..argc]。您的计划会跳过检查argv[0]

除了您指定的参数外,argv[0]还设置为您的程序名称(如果平台无法确定名称,则为NULL)。

如果您想检查命令行参数,可以执行类似

的操作
int i;
for (i=0; i<argc; i++) {
    printf("argv[%d] = %s\n", i, argv[i]);
}

答案 1 :(得分:1)

有没有想过printf("%s",argv[0])会做什么? C数组索引从0开始。这是你的问题的解决方案.argv [0]保存正在执行的程序名,并且是第一个参数(例如,a.out)

答案 2 :(得分:1)

实际上,argv [0]保存程序的名称,并在程序分叉时使用它。 无论何时在C中调用fork(),它都会生成一个与父进程同名的子进程,例如a.out。 Child从argv [0]获取其父级的名称。所以每件事都有正确的目的。

答案 3 :(得分:0)

这是因为argv不包含命令行参数。它拥有完整的命令行。第一个是命令,其余是参数。