我们经常会使用到命令行程序或命令,如 cd xxx、copy xx yy、xx --h、xx --version 等,我们如何获得命令行参数呢?
通常C/C++控制台应用程序的主函数是这样的:
int main(void)
{
// other code
return 0;
}
但使用这种形式的主函数我们不能获得命令行参数。这时我们会用到下面的主函数形式:
int main(int argc, char* argv[ ])
{
// other code
return 0;
}
其中argv[0]是程序可执行文件本身的名字【不含诸如.exe的扩展名】;argc表示命令含参数的个数:直接在命令行【或终端】执行一个控制台程序而什么参数也不给时,argc=0,argv[0]=程序名;给定k个参数时,argv[k]=第k个参数。注意,命令行参数都是以字符串的形式传给主函数的,如要传递整数或浮点数则必需对字符串使用atoi、atol、atof等函数进行相应的转换【这些函数在<stdlib.h>及<cstdlib>里有声明】。下面通过一个简单的例子来说明命令行参数控制台程序的编写:
// testarg.c
#include <stdio.h>
int main(int argc, char* argv[ ])
{
int i;
for(i=0; i<argc; ++i)
printf("argv[ %d ]= %s/n", i, argv[i]);
return 0;
}
此程序的目的用于输出所有的命令行参数,C++版如下:
// testarg.cpp
#include <iostream>
using namespace std;
int main(int argc, char* argv[ ])
{
int i;
for(i=0; i<argc; ++i)
cout<<"argv[ "<<i<<" ]= "<<argv[i]<<endl;
return 0;
}
读者不妨将段代码进行编译,以不同的参数运行,看看有什么输出。【如果读者使用的是GCC【Unix、Linux、MinGW等】,则代码最后一行空行是必需的】