从命令行传递的参数称为命令行参数。这些参数由main()
函数来处理的。
要支持命令行参数,您需要更改main()
函数的结构,如下所示 -
int main(int argc, char *argv[] )
C
在这里,argc
计算参数的数量。它将文件名称作为第一个参数。
argv []
包含参数的总数。第一个参数永远是此程序的文件名。
命令行参数实例
我们来看一下命令行参数的例子,用文件名传递一个参数。创建一个源文件:main-commandline.c,其代码如下所示 -
#include
void main(int argc, char *argv[] ) {
printf("Program name is: %s\n", argv[0]);
if(argc cd worksp\clanguage\command-line-arguments\Debug
F:\worksp\clanguage\command-line-arguments\Debug>dir
驱动器 F 中的卷是 Others
卷的序列号是 0007-6F29
F:\worksp\clanguage\command-line-arguments\Debug 的目录
2017/08/18 01:23 .
2017/08/18 01:23 ..
2017/08/18 01:23 37,376 command-line-arguments.exe
2017/08/18 01:23 291,652 command-line-arguments.ilk
2017/08/18 01:23 552,960 command-line-arguments.pdb
3 个文件 881,988 字节
2 个目录 53,178,052,608 可用字节
F:\worksp\clanguage\command-line-arguments\Debug>command-line-arguments.exe test-arg
Program name is: command-line-arguments.exe
First argument is: test-arg
F:\worksp\clanguage\command-line-arguments\Debug>
Shell
如果传递很多参数,它只会打印一个,如下:
root@AYZ:~# ./a.out hello I am Maxsu
Program name is: ./a.out
First argument is: hello
Shell
但是,如果您在双引号内传递许多参数,则所有参数将被视为单个参数。如下 -
root@AYZ:~# ./a.out "hello I am Maxsu"
Program name is: ./a.out
First argument is: hello I am Maxsu
Shell
您可以编写程序来打印所有参数。在这个程序中,我们只打印argv [1]
,这就是为什么只打印一个参数的原因了,您可以根据需要使用或打印argv [2]
,argv [3]
,argv [4]....
等等。