返回顶部

C 命令行参数

[复制链接]
汪星人Lv.1 显示全部楼层 发表于 2021-12-6 14:59:39 |阅读模式 打印 上一主题 下一主题
  执行程序时,可以从命令行传值给C程序。这些值被称为命令行参数,它们对程序很重要,特别是当您想从外部控制程序,而不是在代码内对这些值进行硬编码时,就显得尤为重要了。

  命令行参数是使用main()函数参数来处理的,其中,argc是指传入参数的个数,argv[]是一个指针数组,指向传递给程序的每个参数。下面是一个简单的实例,检查命令行是否有提供参数,并根据参数执行相应的动作:

[C] 纯文本查看 复制代码
#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");
   }
}


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

[C] 纯文本查看 复制代码
$./a.out testing
The argument supplied is testing


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

[C] 纯文本查看 复制代码
$./a.out testing1 testing2
Too many arguments supplied.


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

[C] 纯文本查看 复制代码
$./a.out
One argument expected


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

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

[C] 纯文本查看 复制代码
#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");
   }
}


  使用一个用空格分隔的简单参数,参数括在双引号中,编译并执行上面的代码,它会产生下列结果:
[C] 纯文本查看 复制代码
$./a.out "testing1 testing2"

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


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

达内教育:成立于2002年。致力于面向IT互联网行业,培养软件开发工程师、测试工程师、系统管理员、智能硬件工程师、UI设计师、网络营销、会计等职场人才 达内使命:缔造年轻人的中国梦、缔造达内员工的中国梦 达内愿景:做管理一流的教育公司
  • 商务合作

  • 微信公众号

  • Powered by Discuz! X3.4 | Copyright © 2002-2021, 达内教育 Tedu.cn
  • 京ICP备08000853号-56 |网站地图 | 京公网安备 11010802029508号