C 语言 命令行参数

在运行程序时,我们可以通过命令行传值给 C 程序,这些值被称为 命令行参数

命令行参数 对程序而言是非常重要,特别是我们想从外部控制程序,而不是在代码内对这些值进行硬编码时,就显得尤为重要了。

C 语言程序通过 main() 函数的参数来处理命令行参数,其中,

  • argc 是指传入参数的个数
  • argv[] 是一个指针数组,指向传递给程序的每个参数

我们来看一个简单的范例

下面这个范例检查命令行是否有提供参数,并根据参数执行相应的动作

/**
 * file: main.c
 * author: 简单教程(www.twle.cn)
 */

#include <stdio.h>

int main( int argc, char *argv[] )  
{
   printf("你传递了 %d 个命令行参数\n", argc);

   printf("它们分别是:\n");

   for( int i = 0; i < argc; i++ )
   {
      printf("%s, ",argv[i]);
   }

   printf("\n");
}

编译和运行以上程序,当使用一个参数时,输出结果如下:

$ gcc main.c && a.out  www.twle.cn
你传递了 2 个命令行参数
它们分别是:
a.out, www.twle.cn,

a.out 其实也是一个参数,是第一个参数

传递两个值给 a.out 时输出结果如下

$ gcc main.c && a.out  Love www.twle.cn
你传递了 3 个命令行参数
它们分别是:
a.out, Love, www.twle.cn,

不传递任何值给 a.out 时输出结果如下:

$ gcc main.c && a.out
你传递了 1 个命令行参数
它们分别是:
a.out,

注意

  • argv[0] 存储程序的名称

  • argv[1] 是一个指向第一个命令行参数的指针,

  • argv[n] 是最后一个参数。

  • 如果没有提供任何参数,argc 将为 1,否则,如果传递了一个参数,argc 将被设置为 2

  • 多个命令行参数之间用空格分隔,但是如果参数本身带有空格, 那么传递参数的时候应把参数放置在双引号 "" 或单引号 '' 内部。

让我们使用一个用空格分隔的简单参数,参数括在双引号中传递给 a.out 输出结果如下

$ gcc main.c && a.out "I Love www.twle.cn"
你传递了 2 个命令行参数
它们分别是:
a.out, I Love www.twle.cn,

而如果没有使用双引号,则输出结果如下

$ gcc main.c && a.out I Love www.twle.cn
你传递了 4 个命令行参数
它们分别是:
a.out, I, Love, www.twle.cn,
关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.