C/C++ 中的命令行参数
cc++server side programmingprogramming更新于 2024/9/7 7:10:00
在执行 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