操作系统 实验1 命令解释程序的编写
2016-03-23 22:22
267 查看
实验一 命令解释程序的编写
专业:商软一班 姓名:董婷婷 学号:201406114105一、 实验目的
(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、本程序采用c语言中的while语句和if、else if的嵌套的方法完成。将所需的命令字符串存到定义的数组内,从键盘输入利用strcmp进行筛选,若输入正确的命令会显示此命令的解释。输入“help”就会提示将命令全部显示出来,而输入“quit”就会退出程序。2、主要程序段
charcmd[20][20]={"dir","cd","md","rd","cls","date","time","ren","copy","help","quit"}; char str[20];
释:定义数组,将命令存入数组中,需要时就进行调用。
if(strcmp(str,cmd[0])==0) { printf("dir 内部命令:显示一个目录中的文件和子目录\n"); } else if(strcmp(str,cmd[1])==0) { printf("cd 内部命令:显示当前目录的名称或将其更改\n"); } else if(strcmp(str,cmd[2])==0) { printf("md 内部命令:建立一个目录或文件夹.dos下面习惯叫目录,win下面习惯叫文件夹\n"); } else if(strcmp(str,cmd[3])==0) { printf("rd 内部命令:删除目录\n"); } else if(strcmp(str,cmd[4])==0) { printf("cls 内部命令:清除屏幕\n"); } else if(strcmp(str,cmd[5])==0) { printf("data 内部命令:显示或设置日期\n"); } else if(strcmp(str,cmd[6])==0) { printf("time 内部命令:显示或设置系统时间\n"); } else if(strcmp(str,cmd[7])==0) { printf("ren 内部命令:重新命名文件,ren命令的格式是:ren 源文件名目的文件名\n"); } else if(strcmp(str,cmd[8])==0) { printf("copy 内部命令:将至少一个文件复制到另一个位置\n"); } else if(strcmp(str,cmd[9])==0) { printf("dir 显示一个目录中的文件和子目录\n"); printf("cd 显示当前目录的名称或将其更改\n"); printf("md 建立一个目录或文件夹.dos下面习惯叫目录,win下面习惯叫文件夹\n"); printf("rd 删除目录\n"); printf("cls 清除屏幕\n"); printf("data 显示或设置日期\n"); printf("time 显示或设置系统时间\n"); printf("ren 重新命名文件,ren命令的格式是:ren 源文件名目的文件名\n"); printf("copy 将至少一个文件复制到另一个位置\n"); printf("help 提供Windows命令的帮助信息\n"); printf("quit 退出命令解释程序\n"); } else if(strcmp(str,cmd[10])==0) return; else { printf("你输入错误的信息,请重新输入!\n"); } } }
释:这一段则是主要的程序内容,用while语句进行选择,然后用if、else if进行嵌套。当输入对应的命令则可以显示其命令解释,还可输入help进行查看命令行提示,输入quit后则退出程序。利用strcmp进行判断,虽然程序较为冗余,但是清晰明了。
源程序:
#include<stdio.h> #include<string.h> void main() { char cmd[20][20]={"dir","cd","md","rd","cls","date","time","ren","copy","help","quit"}; char str[20]; printf(" 欢迎来到命令解释程序!\n"); printf(" \n"); while(1) { printf("请输入显示符:"); gets(str); if(strcmp(str,cmd[0])==0) { printf("dir 内部命令:显示一个目录中的文件和子目录\n"); } else if(strcmp(str,cmd[1])==0) { printf("cd 内部命令:显示当前目录的名称或将其更改\n"); } else if(strcmp(str,cmd[2])==0) { printf("md 内部命令:建立一个目录或文件夹.dos下面习惯叫目录,win下面习惯叫文件夹\n"); } else if(strcmp(str,cmd[3])==0) { printf("rd 内部命令:删除目录\n"); } else if(strcmp(str,cmd[4])==0) { printf("cls 内部命令:清除屏幕\n"); } else if(strcmp(str,cmd[5])==0) { printf("data 内部命令:显示或设置日期\n"); } else if(strcmp(str,cmd[6])==0) { printf("time 内部命令:显示或设置系统时间\n"); } else if(strcmp(str,cmd[7])==0) { printf("ren 内部命令:重新命名文件,ren命令的格式是:ren 源文件名目的文件名\n"); } else if(strcmp(str,cmd[8])==0) { printf("copy 内部命令:将至少一个文件复制到另一个位置\n"); } else if(strcmp(str,cmd[9])==0) { printf("dir 显示一个目录中的文件和子目录\n"); printf("cd 显示当前目录的名称或将其更改\n"); printf("md 建立一个目录或文件夹.dos下面习惯叫目录,win下面习惯叫文件夹\n"); printf("rd 删除目录\n"); printf("cls 清除屏幕\n"); printf("data 显示或设置日期\n"); printf("time 显示或设置系统时间\n"); printf("ren 重新命名文件,ren命令的格式是:ren 源文件名目的文件名\n"); printf("copy 将至少一个文件复制到另一个位置\n"); printf("help 提供Windows命令的帮助信息\n"); printf("quit 退出命令解释程序\n"); } else if(strcmp(str,cmd[10])==0) return; else { printf("你输入错误的信息,请重新输入!\n"); } } }
四、实验总结
因为对c语言掌握不够熟悉,要加强C语言的学习,尤其是数组和指针。经过查询资料后,顺利的完成了程序。经过了这次实验,我对c语言有了深一步的了解,也初步了解了DOS的调用原理,命令解释程序的工作原理,希望能够更加深一步的了解。
相关文章推荐
- js函数1-函数定义
- linux shell 统计不同类型文件数目
- hdoj 毕业bg 1881 (背包)
- 虚函数
- 使用RxJava实现的超简单事件总线RxBus
- linux下比较文件
- 《大话数据结构》 读书心得
- Nginx-配置误区
- 使用战火引擎制作游戏登陆界面
- Leetcode 134. Gas Station
- 可变函数
- HDOJ 1175连连看 (DFS)
- UVA 11039(p78)----Building designing
- 第三周内容
- 【MySQL】SELECT语句 计算字段 数据处理函数 汇总函数 分组数据 子查询
- RSync实现文件备份同步详解
- ubuntu技巧--pycharm找不到cv2的解决方法
- oracle字符集的查看和修改(以修改redhat库字符集为例)
- 循环
- Pie