首页 理论教育C语言程序设计基础:命令行参数使用技巧

C语言程序设计基础:命令行参数使用技巧

【摘要】:图8.11命令行参数结构示意图命令行参数演示示例。上面程序执行时,如果没有按要求正确提供命令行参数则输出提示信息Using:command arg1 arg2<CR>后退出程序。若正确提供了命令行参数则输出结果为:sum=164.350000。

在操作系统下,为执行某个程序而键入的一行字符称为命令行。命令行的一般形式为:

命令名参数1参数2参数3…参数n

命令行中的每一个成分之间以一个或者多个空格隔开。例如,DOS操作系统的copy命令使用形式为:

copy c:\source.c c:\bak\prg.c

上式中,copy是DOS系统的文件拷贝命令,是执行文件名。命令实现的功能是将C盘根目录下的文件source.c拷贝到C盘bak子目录下,并改名为prg.c。

在视窗系统中,也可以在Windows系统的运行对话框中通过输入命令行“winword d:\abc.doc”,实现启动字处理程序Word的同时打开D盘根目录下Word文档“d:\abc.doc”,如图8.10所示。

图8.10 命令行参数

C程序通过主函数带形参表来实现命令行参数功能,带参数的main函数形式为:

主函数的形式参数有两个,一个整型参数用于记录命令行输入的参数个数,习惯上用标识符argc表示;另一个是字符型指针数组argv,用于存放命令行上输入的各实参字符串的起始地址,即指针数组的每一个元素指向一个由命令行上传递而来的字符串。

例如,若有C源程序文件echo.c,程序中的主函数头为:

int main(int argc,char*argv[])

源程序文件编译连接后生成执行文件echo.exe,执行程序时命令行为:

echo file1.txt file2.txt

则参数传递的结果为:argc=3、argv[0]指向字符串"echo.exe"(即第一个参数是main所在的可执行文件名)、argv[1]指向字符串"file1.txt"、argv[2]指向字符串"file2.txt",如图8.11所示。

图8.11 命令行参数结构示意图

【例8.15】 命令行参数演示示例。(www.chuimin.cn)

对ex0615.c编译、链接后得到执行文件ex0615.exe。在命令提示符窗口中进入到ex0615.exe所在文件夹。在DOS命令提示符输入命令行:ex0615 hello world执行,程序执行的结果为:

test

hello

world

在VC++6集成环境中可以直接调试含有命令行参数的程序,具体方法请参考附录C。

使用命令行参数时特别需要注意的是,通过命令行参数只是从程序外向程序内部传递了若干个字符串,程序中用字符指针数组来组织这些字符串,至于这些字符串的物理含义(即传递这些字符串的目的)由程序员自己解释,如表示某个文件的名字、表示被处理的字符串等。如果通过命令传递进来的是其他意义的数据,则需要按使用要求进行转换,下面的例8.16说明了这个问题。

【例8.16】 编写程序实现功能:程序执行时从命令行上带入两个实数,求两个实数之和并输出。

上面程序执行时,如果没有按要求正确提供命令行参数(即命令行上的参数不是3个)则输出提示信息Using:command arg1 arg2<CR>后退出程序。若正确提供了命令行参数(假设参数为130.45 33.9)则输出结果为:sum=164.350000。