C语言程序设计之命令行参数

   在许多应用软件运行时都带有命令行参数,其实这些命令行参数在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);

  for(j=strlen(path2);j>0;j--)/*提取参数中的路径到path2 */

  {if((path2[j]==''))||(path2[j]==':')){

  path2[j+1]='';

  goto senull;}

  }

  path2[0]='';

  senull:

  if(strlen(path2)==0)  /* 若给出的参数中没带路径,则取当前路径*/

  strcpy(path2,path1);

  printf(n**模拟DIR**n 命令目录路径%s,path2);

  done=findfirst(ss,&f,55); /*查找第一个配匹的文件*/

  j=1;

  while(!done)

  {if (f.ff_attrib!=0x10) /* 若文件属性不是目录 */

  printf(n %15s %20ld,f.ff_name,f.ff_fsize);

  else

  printf(n &11s ,f.ff_name);

  num++;

  j++;

  if(j==23)

  printf(n --------More (按任意键继续)----);

  getch();

  j=0;

  printf(″n (目录路径%s)″,path2);}

  done=findnext(&f); /*查找下一个配匹的文件*/

  }

  printf(″n 当前目录中总共有%d个文件.n″,num);

时间: 2025-01-23 22:46:21

C语言程序设计之命令行参数的相关文章

c语言-C语言中的命令行参数有什么作用?

问题描述 C语言中的命令行参数有什么作用? 最近再学习C语言,在学习到命令行参数的问题的时候搞清楚了命令行参数的用法以及怎么实现的,但是目前无法理解命令行参数到底在实际编程当中的作用是是什么? 希望得到好心人的帮助,谢谢. 解决方案 你可以做一个实验.按键盘上ctrl右边的windows键,不松手,再按下r,打开运行对话框. 输入如下命令 explorer 运行,你会打开一个我的电脑的窗口,默认显示的是你的文档或者当前目录. 关闭,再输入 explorer c: 这次打开我的电脑,并且默认显示的

Go程序设计语言1.2 命令行参数

1.2 命令行参数 大部分程序处理输入然后产生输出,这就是关于计算的大致定义.但是程序怎样获取数据的输入呢?一些程序自己生成数据,更多的时候,输入来自一个外部源:文件.网络连接.其他程序的输出.键盘.命令行参数等.随后的一些示例将从命令行参数开始讨论这些输入. os包提供一些函数和变量,以与平台无关的方式和操作系统打交道.命令行参数以os包中Args名字的变量供程序访问,在os包外面,使用os.Args这个名字. 变量os.Args是一个字符串slice.slice是Go中的基础概念,很快我们将

c语言-C语言,用命令行参数复制文件,请问哪里出错了

问题描述 C语言,用命令行参数复制文件,请问哪里出错了 #include #include int main(int argc, char *argv[]) { int ch; errno_t err; FILE *source, *destination; if ((err = fopen_s(&source, argv[1], "rb") )!=0) { printf("can't open %sn", argv[1]); exit(1); } if (

c语言-C语言使用命令行参数问题

问题描述 C语言使用命令行参数问题 在C语言中,为了使用命令行参数,main函数的第一行一般形式为void main(int argc,char*argv[]),如果命令行为"test a 3 data",则argv[0]表示的是:A)test B)a C)3 D)data===答案是A,求大侠解释? 解决方案 依次 agrv[0]代表程序名,argv[1]....之后代表参数 解决方案二: 当然了,参数用空格分隔.第一个是test.第二个是a,等等.选a 解决方案三: 学习C语言时一

php 命令行参数详解及应用

命令行|详解 大家知道,php是一种PHP是一个基于服务端来创建动态网站的脚本语言,您可以用PHP和HTML生成网站主页.当用户打开php页面时,服务端便执行PHP的命令并将执行结果发送至用户的浏览器中,这类似于ASP和CoildFusion,PHP可以运行在WINDOWS和多种版本的UNIX上.除了能够操作您的页面外,PHP还能发送HTTP的标题.您可以设置cookie,管理数字签名和重定向用户,而且它提供了极好的连通性到其它数据库(还有ODBC),集成各种外部库来做用PDF文档解析XML的任

C/C++中命令行参数的原理

很早以前的dos应用程序中,我们经常会用命令行参数执行应用程序例如: copy c:\1.txt d:\ 在c/c++中,命令行参数的传递是利用main进行形参传递实现的 前面的教程中我们对面都进行了void main()或者是void main(void)的定义,这表示main不返回任何类型,和main不带有任何参数,但在缺剩状态下mian()这样形式下,形式参数一直是存在在栈空间内的只是隐藏了起来. 为了实现命令行参数我们将使用main(int argc,char* argv[])这样的形式

在C++ Builder中取得命令行参数

用过C语言编程的人都知道,在DOS下的编程可以通过main函数的参数取得命令行参数的个数以及每个参数的字符串,例如 int main(int argv ,char *argv[]) { - } 则命令行参数是argc个,这些参数分别存储在argv[0]-argv[argc-1]中,其中argv[0]是可执行文件的名字(含路径),那么Windows程序是怎么取得命令行参数的呢?用C语言写过windows程序的人都知道,在windows程序的主函数WinMain()中,有一个参数lpszCmd,这个

如何分析命令行参数

如何分析命令行参数     GNU/Linux的命令行选项有两种类型:短选项和长选项,前者以 '-' 作为前导符,后者以 '--' 作为前导符.     比如有一个命令: $ myprog -a vv --add -b --file a.txt b.txt - -- -e c.txt     在GNU/Linux系统,对这种情况的一种合理解释是:     a是短选项,带一个参数vv:     add是长选项,无参数:     b是短选项,无参数:     file是长选项,带一个参数a.txt:

Arg_parser 1.7发布 命令行参数分析工具

Arg_parser 是一个命令行参数分析工具,遵循POSIX和GNU标准.它提供了现有的C++++和Chttp://www.aliyun.com/zixun/aggregation/18713.html">语言版本的参数分析,C++版本可以作为一个C++类,能够解析配置文件的选项:同时C语言版本实现了一个单一的结构加上相关的功能.其特点是简单易用,比'getopt_long'更安全. Arg_parser 1.7该版本主要是一些轻微错误的修正.GNU编码标准已更改为引号字符.配置选项&q