命令行参数
命令行界面中,可执行文件可以在键入命令的同一行中获取参数用于具体的执行命令。无论是Python、Java还是C等等,这些语言都能够获取命令行参数(Command-line argument,与命令同一行中的附加项)。
C编写的可执行文件的程序入口函数是main
函数,因此C程序真正读取命令行参数的就是main
函数。
例:
#include <stdio.h>
/*
* test.c 编译后产生可执行文件test.exe或test.out,程序来源于C Primer Plus第十一章
*/
int main(int argc,char *argv[]) {
int count;
printf("The command line has %d arguments :\n",argc-1);
for (count = 1; count < argc; ++count) {
printf("%d: %s\n",count,argv[count]);
}
return 0;
}
我们在test.exe所在文件夹打开命令行窗口,键入test I love you
,会输出:
The command line has 3 arguments:
1: I
2: love
3: you
C标准规定main
函数作为程序入口,可以没有参数,也可以有两个参数。两种参数的情况下,第一个参数argc
是命令行中的字符串个数,字符串的分隔按空格来判断,上例中总共输入了4个字符串,分别是 test, I, love, you。第二个参数argv
是一个指向这些字符串的指针数组。命令行界面中输入的所有字符串被存储在这个数组中,可以用for循环遍历。第一个元素当然是命令的名称。当然,对于接受参数的main
函数也可以用另一种声明:
inr main(int argc, int **argv)
。argv
是一个指向字符的指针的指针,本质上还是指向包含多个字符串的数组。
命令行界面允许使用双引号把多个单词识别成一个参数:
test "I love you."
这其中I love you.
被认为是一个整体的参数。