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" Program name ./a.out The argument supplied is testing1 testing2
C语言