C语言中的命令行参数

本节工作目录:/home/song/project/c02

命令行参数就是主函数main的参数argc和argv,其中argc为整型,表示参数的总数量;argv为字符串数组,存贮参数的具体内容。

测试命令行参数(一)

编辑源代码argv.c,内容如下:

#include <stdio.h>

int
main(int argc, char *argv[])
{
  int i;

  printf("参数总数量为:%d\n", argc);
  printf("命令名为:%s\n", argv[0]);

  for(i=1; i<argc; i++) {
    printf("参数%d为%s\n", i, argv[i]);
  }

  return 0;
}

编译,输入命令:gcc argv.c -o argv

song@song-Inspiron-N4030:~/project/c02$ gcc argv.c -o argv

运行,输入命令:./argv aaa bbb ccc

song@song-Inspiron-N4030:~/project/c02$ ./argv aaa bbb ccc
参数总数量为:4
命令名为:./argv
参数1为aaa
参数2为bbb
参数3为ccc

说明,即使不加参数,只单独运行命令./argv,也会输出:

song@song-Inspiron-N4030:~/project/c02$ ./argv
参数总数量为:1
命令名为:./argv

也就是说argv[0]使终是程序名称。

测试命令行参数(二)

如此,我们可以通过限定argc的大小来限定参数的个数,达到不加参数不继续运行的目的。比如说我们要求程序运行时必需加一个参数,则argc必需要大于等于2,否则说明命令行没有加参数,提示需要用户加一个参数。

编辑源代码argt.c,内容如下:

#include <stdio.h>

int
main(int argc, char *argv[])
{
  if(argc<2) {
    printf("注意:请在命令行中加一个参数,否则不能继续运行!\n");
    return 1;
  }
  printf("参数是:%s,开始工作......\n", argv[1]);
  return 0;
}

编译,输入命令:gcc argt.c -o argt

song@song-Inspiron-N4030:~/project/c02$ gcc argt.c -o argt

运行,输入命令:./argt

song@song-Inspiron-N4030:~/project/c02$ ./argt
注意:请在命令行中加一个参数,否则不能继续运行!
song@song-Inspiron-N4030:~/project/c02$ ./argt aha
参数是:aha,开始工作......

main函数还可以有第三个参数char *env[],贮存着当前运行环境的的环境变量,下一次我们来测试一下。