程序员之家
程序员之家

C 命令行参数


执行程序时,可以从命令行传值给 C 程序。这些值被称为命令行参数,它们对程序很重要,特别是当您想从外部控制程序,而不是在代码内对这些值进行硬编码时,就显得尤为重要了。

在 C 语言中,命令行参数是一种从命令行获取输入的方法,可以用于运行程序时传递信息给程序。命令行参数通过 main 函数的参数传递给程序。main 函数的原型可以是如下两种形式之一:

int main(int argc, char *argv[]);
或者:
int main(int argc, char **argv);
  • argc (argument count): 表示命令行参数的数量,包括程序名本身。因此,argc 至少为 1。

  • argv (argument vector): 是一个指向字符串数组的指针,其中每个字符串是一个命令行参数。数组的第一个元素(即 argv[0])通常是程序的名称。接下来的元素是传递给程序的命令行参数。

下面是一个简单的实例,检查命令行是否有提供参数,并根据参数执行相应的动作:

#include <stdio.h>

int main( int argc, char *argv[] )  
{
   if( argc == 2 )
   {
      printf("The argument supplied is %s\n", argv[1]);
   }
   else if( argc > 2 )
   {
      printf("Too many arguments supplied.\n");
   }
   else
   {
      printf("One argument expected.\n");
   }
}

使用一个参数,编译并执行上面的代码,它会产生下列结果:

$./a.out testing
The argument supplied is testing

使用两个参数,编译并执行上面的代码,它会产生下列结果:

$./a.out testing1 testing2
Too many arguments supplied.

不传任何参数,编译并执行上面的代码,它会产生下列结果:

$./a.out
One argument expected

应当指出的是,argv[0] 存储程序的名称,argv[1] 是一个指向第一个命令行参数的指针,*argv[n] 是最后一个参数。如果没有提供任何参数,argc 将为 1,否则,如果传递了一个参数,argc 将被设置为 2。

多个命令行参数之间用空格分隔,但是如果参数本身带有空格,那么传递参数的时候应把参数放置在双引号 "" 或单引号 '' 内部。让我们重新编写上面的实例,有一个空格,那么你可以通过这样的观点,把它们放在双引号或单引号""""。让我们重新编写上面的实例,向程序传递一个放置在双引号内部的命令行参数:

#include <stdio.h>

int main( int argc, char *argv[] )  
{
   printf("Program name %s\n", argv[0]);
 
   if( argc == 2 )
   {
      printf("The argument supplied is %s\n", argv[1]);
   }
   else if( argc > 2 )
   {
      printf("Too many arguments supplied.\n");
   }
   else
   {
      printf("One argument expected.\n");
   }
}

使用一个用空格分隔的简单参数,参数括在双引号中,编译并执行上面的代码,它会产生下列结果:

$./a.out "testing1 testing2"

Progranm name ./a.out
The argument supplied is testing1 testing2

使用场景

命令行参数在许多情况下都很有用,例如:

  • 配置文件路径
  • 模式选择(例如调试模式)
  • 输入文件和输出文件名
  • 运行时选项和标志(如 -v 表示详细模式)

注意事项

  • 命令行参数通常是字符串,如果需要将其转换为数值类型,可以使用标准库函数如 atoi 或 strtol
  • 应该始终验证和处理命令行参数,以防止输入错误或恶意输入。
 

手机扫码阅读本文


本文来自互联网,本网站转载的目的在于传递更多信息以供访问者学习参考,所属内容只代表原作者的个人观点,不代表本网站的立场和价值判断,版权归原作者所有。如有侵犯您的版权,请联系我们,我们收到后会尽快核实并第一时间改正。


手机扫码阅读本文

极致C语言(Extreme C)【图】
极致C语言(Extreme C)

用C语言强大的底层语言能力编写高效的系统

C语言趣味编程100例【图】
C语言趣味编程100例

100个C语言趣味编程题,50小时C语言学习视频,赠送758个编程实例源文件,培养编程兴趣,拓宽编程思维,提高编程能力,增强求职竞争力

C语言程序设计入门教程:C Primer Plus第6版中文版+习题解答(套装2册)【图】
C语言程序设计入门教程:C Primer Plus第6版中文版+习题解答(套装2册)

C语言入门经典教程,畅销30余年的C语言程序设计书籍,近百万程序员的启蒙教材,技术大牛案头常备的工具书,被誉为C语言百科全书

c c-command-line