本节书摘来自异步社区《指针的编程艺术(第二版)》一书中的第3章,第3.7节,作者 蔡明志,更多章节内容可以访问云栖社区“异步社区”公众号查看
指针的编程艺术(第二版)
在c程序语言中,函数是平等的,而main() 函数是程序的进入点。在执行程序时可以附加一些选择项,这有点类似早期dos(现称为命令行参数模式)的指令或unix的指令,如dos的dir/w,其中的/w为一个选择项,表示当执行dir指令时,是以wide的模式输出,如unix下的
int main(int argc, char *argv[])<code>`</code>
这条语句多加了两个参数,第一个为argc,表示参数个数(argument count){xe "rgc,表示參數個數(argument count)"},其数据类型是int,另一个为argv,表示参数向量(argument vector){xe "argv,表示參數的向量(argument vector)"},它是指向一个数组指针的变量,这个数组的每一个元素都为指向某一字符串的指针。argc和argv名称不是绝对的,你也可以选取你喜欢的名称。我喜欢这个名称的原因是因为可以很容易了解其代表的含义。
命令行参数的重点在于判断有无附加的选择项,以及如何得到那些附加的选择项,以便进一步的工作。
当argc > 1时,表示有附加的选择项,可使用argv取得,例如,有一程序sort.c,经compile及link得到一个执行文件sort.exe(假设在c:prog的目录下),因此,可在命令行提示符的模式下,输入以下的数据,
/ commandline-1.c /
int main(int argc, char *argv[])
{
int i;
printf("argc = %dn", argc);
for(i=0; i printf("argv[%d]=%sn", i, argv[i]);
printf("(argv[2]+2)=%cn", (argv[2]+2));
printf("((argv+2)+2)=%cn", ((argv+2)+2));
printf("n");
getch();
return 0;
}
/ commandline-2.c /
if (argc == 2) {
switch(*(argv[1]+1))
{
case 'd':
system("dir/w c:\");
break;
case 't':
system("type c:\commandline.c");
default:
printf("using commandline -d or -t");
}
}
else
printf("using commandline -d or -t");
输出结果