实验一 命令解释程序的编写
实验一 命令解释程序的编写
一、目的和要求
1. 实验目的
(1)掌握命令解释程序的原理;
(2)*掌握简单的DOS调用方法;
(3)掌握C语言编程初步。
2.实验要求
编写类似于DOS,UNIX的命令行解释程序
(1)自行定义系统提示符
(2)自定义命令集(8-10个)
(3)用户输入HELP以查找命令的帮助
(4)列出命令的功能,区分内部还是外部命令
(5)用户输入QUIT退出
(6)内部命令有dir, cd, md, rd, cls, date, time, ren, copy等。
二、实验内容
根据教师指定的实验课题,完成设计、编码、测试工作。
三、实验环境
1.PC微机
2.Windows 操作系统
3.C/C++程序开发集成环境
四、实验原理及核心算法参考程序段
- 命令解释程序的原理:
命令解释程序的主要功能是:
1) 接受和执行一条用户从键盘输入的命令,它通常保存一张命令名字(动词)表,其中记录着所有操作命令及其处理程序的入口地址或有关信息。
思考:命令名字表在C语言中如何实现?存放?
- 命令解释程序实现的两种方式 :
1) 一种是它自身包含了命令的执行代码;
2) 另一种是由专门的“系统程序” 实现,自身不含命令处理代码,也不进行处理,仅仅把这条命令对应的命令文件装入内存执行。
例如:在DOS操作系统中,dir、cd、cls等命令的执行代码包含在系统自身内核中,称为内部命令;format、help等命令的执行代码在外部文件中,称为外部命令。
- 编程实现流程
显示程序提示信息;
While(1)
{ 显示提示符;
接收键盘的字符串;
判断是否quit程序退出指令,是则退出;
判断是否内部命令,并给出相应的信息,否则给出错误信息;
}
显示退出程序信息;
- 参考结果图:
- 实验拓展
1) *如何真正实现dir、cls等DOS内部命令的功能?
2) **如何真正实现format、help等DOS外部命令的功能?
1 #include<stdio.h> 2 #include<stdlib.h> 3 main() 4 { 5 6 char cmd[100]; 7 printf("Microsoft Windows SB [版本 5.1.2600]\n(C) 版权所有 1985-2001 Microsoft Corp.\n"); 8 while(strcmp(cmd,"exit")!=0||strcmp(cmd,"quit")!=0) 9 { 10 11 printf("\nC:\\Documents and Settings\\Administrator>"); 12 gets(cmd); 13 if(strcmp(cmd,"exit")==0) 14 exit(0); 15 else 16 { 17 if(strcmp(cmd,"quit")==0||strcmp(cmd,"dir")==0||(cmd[0]=="c"&&cmd[1]=="d")||strcmp(cmd,"md")==0||strcmp(cmd,"rd")==0||strcmp(cmd,"cls")==0||strcmp(cmd,"date")==0||strcmp(cmd,"time")==0||strcmp(cmd,"ren")==0||strcmp(cmd,"copy")==0) 18 { 19 if(strcmp(cmd,"dir")==0||strcmp(cmd,"cd")==0||(cmd[0]=="c"&&cmd[1]=="d")||strcmp(cmd,"cd")==0||strcmp(cmd,"md")==0||strcmp(cmd,"rd")==0||strcmp(cmd,"cls")==0||strcmp(cmd,"date")==0||strcmp(cmd,"time")==0||strcmp(cmd,"ren")==0||strcmp(cmd,"copy")==0) 20 { 21 printf("\n内部命令\n\n"); 22 } 23 system(cmd); 24 } 25 else 26 printf("\n命令出错!"); 27 } 28 } 29 }