C++语言程序设计

| 例7-11

// command.cpp
#include <iostream.h>
void main( int argc, char *argv[] )
{
int i;
for( i = 1; i < argc; i++ )
cout << argv[i] << " ";
cout << endl;
}

command.cpp文件中的main函数的功能是：打印从命令行输入的、除文件名外的其它字符串。假如我们将文件command.cpp编译、连接，生成执行文件command.exe，在命令行提示符下键入：
command I am learning C++
则argc=4，argv[0]="I"， argv[1]="am" ，argv[2]="learning" ，argv[3]="C++"。
输出结果为：
I am learning C++
由于main函数不能被其它函数调用，只能被系统调用，因此不可能在程序内部取得实际值。那么，在何处把实参值赋予main函数的形参呢? 实际上，main函数的参数值是从操作系统命令行上获得的。当我们要运行一个可执行文件时，在DOS提示符下键入文件名，再输入实际参数，便可把这些实参传送到main的形参中去。
DOS提示符下命令行参数的一般形式为：
C:\>可执行文件名 参数 参数……
需要注意的是：main 的两个形参和命令行中的参数在位置上不是一一对应的。因为，main的形参只有二个，而命令行中的参数个数原则上未加限制。argc参数表示了命令行中参数的个数(文件名本身也算一个参数)，argc的值是在输入命令行时由系统按实际参数的个数自动赋予的，而其它参数的标识符被存放在指针数组argv中。
例如，如果运行程序时，键入命令：
c:\path\program -c filename.txt
则命令行参数共有3个，即argc=3，它们分别是c:\path\program、-c、filename.txt。标识这三个参数的字符串的地址分别存放在argv数组的argv[0]、argv[1]和argv[2]中。