C 教程
1. C 语言教程 2. C 简介 3. C 环境设置 4. C 程序结构 5. C 基本语法 6. C 数据类型 7. C 变量 8. C 常量 9. C 存储类 10. C 运算符 11. C 判断 12. C 循环 13. C 函数 14. C 作用域规则 15. C 数组 16. C 指针 17. C 字符串 18. C 结构体 19. C 共用体 20. C 位域 21. C typedef 22. C 输入 & 输出 23. C 文件读写 24. C 预处理器 25. C 头文件 26. C 强制类型转换 27. C 错误处理 28. C 递归 29. C 可变参数 30. C 内存管理 31. C 命令行参数 32. C 标准库 – 参考手册 33. C 标准库 – <assert.h> 34. C 标准库 – <ctype.h> 35. C 标准库 – <errno.h> 36. C 标准库 – <float.h> 37. C 标准库 – <limits.h> 38. C 标准库 – <locale.h> 39. C 标准库 – <math.h> 40. C 标准库 – <setjmp.h> 41. C 标准库 – <signal.h> 42. C 标准库 – <stdarg.h> 43. C 标准库 – <stddef.h> 44. C 标准库 – <stdio.h> 45. C 标准库 – <stdlib.h> 46. C 标准库 – <string.h> 47. C 标准库 – <time.h>

C 命令行参数

C 命令行参数

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

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


#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