一、 实验目的
(1)掌握命令解释程序的原理;
(2)*掌握简单的DOS调用方法;
(3)掌握C语言编程初步。
二、 实验内容和要求
编写类似于DOS,UNIX的命令行解释程序
(1)自行定义系统提示符
(2)自定义命令集(8-10个)
(3)用户输入HELP以查找命令的帮助
(4)列出命令的功能,区分内部还是外部命令
(5)用户输入QUIT退出
(6)内部命令有dir, cd, md, rd, cls, date, time, ren, copy等。
三、 实验方法、步骤及结果测试
- 1. 源程序名:压缩包文件(rar或zip)中源程序名 MiniOS.c
可执行程序名:MiniOS.exe
- 2. 原理分析及流程图
采用数组的存储结构。
主要算法:
显示程序提示信息;
While(1)
{ 显示提示符;
接收键盘的字符串;
判断是否quit程序退出指令,是则退出;
判断是否内部命令,并给出相应的信息,否则给出错误信息;
}
显示退出程序信息
- 3. 主要程序段及其解释:
for( i=0;i<19;i++)
if(strcmp(ch1,j[i])==0) /*比较输入的字符串与数组的关键字是否相等*/
{
switch(i)
{
case 0:
printf("dir 显示一个目录中的文件和子目录。 ");
break;
case 1:
printf("cd 显示当前目录的名称或将其更改。 ");
break;
case 2:
printf("md 创建目录。 ");
break;
case 3:
printf("rd 删除目录。 ");
break;
case 4:
printf("cls 清除屏幕。 ");
break;
case 5:
printf("date 显示或设置日期。 ");
break;
case 6:
printf("time 显示或设置系统时间。 ");
break;
case 7:
printf("ren 重命名文件。 ");
break;
case 8:
printf("copy 将至少一个文件复制到另一个位置。 ");
break;
case 9:
printf("javac 将某一个java程序进行编译。 ");
break;
case 10:
printf("java 运行某一个已编译的java文件。 ");
break;
case 11:
printf("erase 删除至少一个文件。 ");
break;
case 12:
printf("chkntfs 显示或修改启动时间磁盘检查。 ");
break;
case 13:
printf("assoc 显示或修改文件扩展名关联。 ");
break;
case 14:
printf("at 计划在计算机上运行的命令和程序。 ");
break;
case 15:
printf("attrib 显示或更改文件属性。 ");
break;
case 16:
printf("call 从另一个批处理程序调用这一个。 ");
break;
case 17:
printf("dir cd md rd cls date time ren copy javac java erase chkntfs assoc at attrib call Enter " quit" to quit this program!! ");
break;
case 18:
printf("Thanks for using it,bye!! ");
break; }
return 1;
}
printf("No this one!! Not a internal commal. ");
return 0;
根据输入的字符串,输出相应的信息。
- 4. 运行结果及分析
四、 实验总结
这次实验用了switch case语句,优点是便于自己编写简单点,而缺点是没有读取文件方便。