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语句。整个批处理程序的作用就是显示三个选项,并根据你的选择,执行不同的程序。 上面的程序仅仅是一个例子,有兴趣的学员可以参照其原理,编出满足自己需要的程序来。