微信公众号 
图码生活

每天发布有五花八门的文章,各种有趣的知识等,期待您的订阅与参与
电脑报 1992-2001 十年文章全集
电脑报 1992-2001 十年文章全集
包含从 1992 年 - 2001 年间,两万余篇期刊文章,查询最少输入两个字符
随便看看
读取中
读取中
标题C程序与DOS的命令行接口
栏目基础知识与讲座
作者明炜
发布1995-06-23
  有很多可执行文件都可以接受DOS的命令行参数,如DOS的外部命令FORMAT就可以接收/S,/V等参数,并根据参数的不同而执行不同的操作。用C语言编成的程序也可以具有这种能力。你只要在main 函数的形参说明中说明了argc和argv这两个参数,就可以在程序中通过它们来使用在运行程序时DOS命令行所输入的量。
  另一方面,一个程序执行完以后还可以返回一个非负小数给DOS。如MS_DOS 6.2版本的FORMAT在正常格式化后会返回。在用户按CTRL+C中止格式后就会返回3,在出现严重错误下返回4等等。用户一般并不使用这个返回值,但有时也可能会用到它。DOS中的IF语句可以检测返回值并根据其大小做出不同反应,如果让C语言程序的main函数返回一个整数值,这个值就将被传给DOS,下面我们举一个例子,来看一看C语言程序与DOS的这种信息传递。
  C语言源程序文件ASK.C如下:
  ASK.C
  unsigned int main(int argc,char *argv[])
  {unsigned int i;
  i=0;
  printf("what do you want to do?\n");
  while(argc-->1)
  printf("%d\t%s\n",i++,*++argv);
  scanf("%d",&i);
  return i;
  }
  这个程序于DOS命令行接受参数,它的While循环将各参数编号并打印出来,然后从键盘接收一个整数,并将此整数值作为返回值。这个程序本身并没做太多实际的工作,把它编译,链接,生成ASK.EXE的文件,备用。
  下面是调用ASK.EXE的DOS批处理文件RUN S.BAT
  RUNS.BAT
  ASK windows domm2 exit
  if errorlevel=2 goto exit
  if errorlevel=1 goto doom2
  if errorlevel=0 goto win
  :win
  c:
  cd c:\windows
  win
  goto exit
  :doom2
  d:
  cd d:\game\doom2
  doom2
  goto exit
  :exit
  c:
  cd\
  批处理的第一句调用ASK.EXE,并传给它三个参数。此时,屏幕上将显示:
  what do you want to do?
  0  windows
  1  doom2
  2  exit
  并将你输入的整数解为返回值传给DOS。随后的三条IF语句根据返回值的不同分别去执行不同的DOS命令。注意,这里对返回值进行判定的次序应该是由大到小,因为IF语句是在返回值大于等于等号后的值时,执行它后面的goto语句。整个批处理程序的作用就是显示三个选项,并根据你的选择,执行不同的程序。
  上面的程序仅仅是一个例子,有兴趣的学员可以参照其原理,编出满足自己需要的程序来。