C语言程序的命令行参数

Python015

C语言程序的命令行参数,第1张

在许多应用软件运行时都带有命令行参数,其实这些命令行参数在C语言编写的程序中也可以实现,灵活地运用命令行参数进行处理可以有效地提高程序的运行效率,收到事半功倍的效果。

C语言中有关命令行参数涉及到程序的主函数main(int argc,char *argv[]这样两个参数,其中,int argc表示命令行参数的个数(包括可执行程序名本身),char *argv[]表示每个参数的具体内容,argv[0]为命令行中可执行程序名本身,argv[1]为命令行中第二个参数的内容,依次类推。如下例输出命令行参数的个数及参数的内容:

main (int argc,char *argv[],

{int I

printf(\n命令行中可执行文件名为:%s,argv[0])

printf(\n总共有%d个参数:,argc)

I=0

while(argc>=1)

{printf(″%s  ,argv[I++])

argc--}

}

命令行参数用的最多还是在诸如DIR A:等之类带有盘符、路径或文件名这样的命令行中,所以说灵活处理这一类参数才能有效地提高程序的运行效果。譬如DIR命令,其后可以是盘符,可以是路径,也可以是文件名,如何区分这一参数呢?请看下例(此程序模拟DIR命令,程序要求在命令行输入一个参数:盘符或路径或文件名,若无参数或参数多于一个都将取默认的参数“*.*”)。

\*--------------------

功能:模拟DIR命令进行处理命令行参数

--------------------*/

#include

#include

#include

#inchlude

int j,num=0

char ss[20],path[50],path2[50]

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

{

struct ffblk f

int done

if(argc==2)  /*取命令行参数到数组中*/

strcpy(ss,argv[1])

else

strcpy(ss,″*.*″)/*给数组赋值缺省参数*/

if (((ss[strlen(ss)-1]==′\\′||((ss[strlen(ss)-1]==':'))

strcat(ss,″*.*″)/*若参数为路径或盘符,则加上″*.*″ */

getcwd(path1,50)/*取当前路径*/

if (chdir(ss)==0) /*判断参数是否为路径*/

strcat(ss,\\*.*)/*若路径末没有带\,则加上*.* */

chdir(path1)/*恢复原来路径*/

strcpy(path2,ss)

跟我做。

1、打开集成开发工具(如vc6.0、C-Free 5)。

2、新建一个文件test.c,文件名因人而异。

3、路径我放到了d:\test下,路径也可以随意。

4、编辑源程序。并进行编译连接。

5、在存储经过编译连接的test.exe的文件夹中新建一个记事本文件内容输入CMD,并用另存为更名为a.bat。

6、双击a.bat,打开命令提示符,输入test.exe [参数](test.exe 后边有空格。可以输入任意字符)。

OK了。另外程序有一个地方有点错、for(i=0i<argci++).

为了表达清楚,有点繁琐。望采纳。

楼主,别天真了。

argc的意思是什么?

就是你输入了几个参数这里就是记录的几个

cmd下有个attrib

命令,

attrib

+s

+h

+a

这里参数就是3个至于参数是什么这是需要自己一个个的判断

if

(

argc

==

"/help"

)

if(*argv[1]

=="/help")

还有个重点!!单个字母可以这么比较,字符串也能用这么来比较吗??

不是有个strcmp函数的么?

这参数是不能指定的!!

可变参数的!

假设你这代码生成的函数是louzhu.exe

那么你运行的时候是这么运行的,先把这个放到c:\...\system32下面

开始->运行

输入cmd,回车

louzhu

/hellp

=============

看看下面的连接吧