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