一、 实验目的

(1)认识DOS;

(2)掌握命令解释程序的原理;

(3)掌握简单的DOS调用方法;

(4)掌握C语言编程初步。

二、 实验内容和要求

编写类似于DOS,UNIX的命令行解释程序

(1)自行定义系统提示符

(2)自定义命令集(8-10个)

(3)用户输入HELP以查找命令的帮助

(4)列出命令的功能,区分内部还是外部命令

(5)用户输入QUIT退出

(6)内部命令有dir, cd, md,rd, cls, date, time, ren, copy等。

根据要求,完成设计、编码、测试工作。

三、 实验方法、步骤及结果测试

3.主要程序段及其解释:

#include<stdio.h>

#include<string.h>

void main() /*主函数*/

{

char *b[]={"dir","cd","md","rd","cls","date","time","ren","copy","help", "quit"}; /*指针数组存储关键字*/

int pan(char ch1[],char *j[]);

char a[],*p=a;

printf("欢迎来到dos系统\n");

printf("quit :退出     help:显示所有功能\n");

c1: printf("请输入命令:");

scanf("%s",a);

pan(p,b); /*函数调用*/

if(strcmp(a,b[])!=) /*比较输入的字符串是否quit结束命令*/ goto c1;

else printf("out of work!!\n");

}

int pan(char ch1[],char *j[]) /*子函数*/

{

int i;

for( i=;i<;i++)

if(strcmp(ch1,j[i])==) /*比较输入的字符串与数组的关键字是否相等*/

{

switch(i)

{

case :printf("command name is dir.\nIt's function is list file.\nIt's an internal command.\nVolume in drive K gas no label.\nVolume Serial Number is 60F0-6C24\n\n");break;

case :printf("command name is cd.\nIt's function is change directory.\nIt's an internal command.\n");break;

case :printf("command name is md.\nIt's function is creat a new directory.\nIt's an internal command.\n");break;

case :printf("command name is rd.\nIt's function is delete a directory which is empty.\nIt's an internal command.\n");break;

case :printf("command name is cls.\nIt's function is clean screen\nIt's an internal command.\n");break;

case :printf("command name is date.\nIt's function is show date.\nIt's an internal command.\n");break;

case :printf("command name is time.\nIt's function is shio time.\nIt's an internal command.\n");break;

case :printf("command name is ren.\nIt's function is rename a file.\nIt's an internal command.\n");break;

case :printf("command name is copy.\nIt's function is copy files.\nIt's an internal command.\n");break;

case :printf("dir\tcd\tmd\trd\tcls\ndate\ttime\tren\tcopy\nEnter \" quit\" to quit this program!!\n");break;

case :printf("Thanks for using it,bye!!\n");break;

}

return ;}

printf("No this one!!\nNot a internal commal.\n");return ;

}

四、运行结果截图及分析

当打开运行界面时,就出现

欢迎来到dos系统

quit :退出     help:显示所有功能

请输入命令:

然后当你输入各种命令就会出现相应的字符串

输入help就会出现所有命令

输入quit就会退出界面。

四、实验心得

通过这个简单地编写dos系统的程序,让我更加清楚更更加了解操作系统这门课,虽然程序很简单,功能也很简单,不过对我们来说挺有意义的。最开始学习操作系统这门课的时候,说实在的,对操作系统这个概念很模糊,觉得很抽象。然后后来慢慢学习之后发现挺有趣的,还可以自己编写简单的dos系统,给了我一些信心。

10.10 dos实验的更多相关文章

  1. MYSQL错误1130:ERROR 1130: Host 10.10.36.115 is not allowed to connect to this MySQL server

    解决远程连接mysql错误1130代码的方法  在用远程连接Mysql服务器的数据库,不管怎么弄都是连接不到,错误代码是1130,ERROR 1130: Host 10.10.36.115 is no ...

  2. 【转】windows环境下安装win8.1+Mac OS X 10.10双系统教程

    先要感谢远景论坛里的各位大神们的帖子  没有他们的分享我也不能顺利的装上Mac OS X 10.10! 写这篇随笔主要是为了防止自己遗忘,同时给大家分享下我的经验. 本教程适用于BIOS+MBR分区的 ...

  3. XCode6.3上使用opencv教程(MacOSX 10.10)

    OpenCV 是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows和Mac OS操作系统上.它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Pyth ...

  4. 多位数每一位个系数:个位num%10;十位num/10%10.......

    请输出满足这样条件的五位数. 个位=万位 十位=千位 个位+十位+千位+万位=百位 思路: 1.定义一个要操作的五位数变量num 2.求出每一位个系数 个:num%10 十:num/10%10 百:n ...

  5. 在Mac OS X Yosemite 10.10.3 中搭建第一个 ASP.NET 5 Web 项目

    终于有时间在 Mac 上安装一下 ASP.NET 5,网上有许多教程,但是多数的时间比较早了,版本不是最新,搭着 Build 2015 的春风,我也实践一下 Mac OS X 上的 ASP.NET 5 ...

  6. 虚拟机(VMware12 pro)安装Mac OS 10.10

    下载VMware12pro,Mac OS 10.10.ios,虚拟机破解: 在虚拟机中创建新虚拟机://http://cdnnn.07net01.com/linux/2016/01/1130384.h ...

  7. [MAC]用beamoff给VMware的Mac OS X 10.10.x加速

    MAC OS X 10.10.x Yosemite在VMWare中实在是太慢了,卡出翔!好在高人多,请装beamoff!详见:https://github.com/JasF/beamoff.git C ...

  8. [MAC]OS X Mavericks 10.9.5 / 10.10.2 VMWare vmdk镜像,解压就能用!

    用起来是比VirtualBox好使很多: 1.鼠标很灵敏,不像Vbox那么飘 2.显卡有驱动,VM可以配置显示器尺寸,完美支持网络.语音.视频,直接搞全屏,还能看电影 3.USB设备支持热插拔 4.支 ...

  9. thinkpad e450 win7黑苹果macos 10.10.5(网/显/声卡驱动)安装成功

    首先上图: 过程: 1.使用变色龙安装macos 10.10.5懒人版黑苹果 2.使用Haswell破解内核替换,成功进入系统 2.5.使用Hackintosh Vietnam Tool 1.9.6以 ...

  10. windows环境下安装win8.1+Mac OS X 10.10双系统教程

    首先要感谢远景论坛里的各位大神们的帖子  没有他们的分享我也不能顺利的装上Mac OS X 10.10! 写这篇随笔主要是为了防止自己遗忘,同时给大家分享下我的经验. 本教程适用于BIOS+MBR分区 ...

随机推荐

  1. Binary Indexed Tree 2D 分类: ACM TYPE 2014-09-01 08:40 95人阅读 评论(0) 收藏

    #include <cstdio> #include <cstdlib> #include <climits> #include <cstring> # ...

  2. iOS 开发中的问题

    错误提示: Your build settings specify a provisioning profile with the UUID “39642B69-0278-4265-8392-4B28 ...

  3. noi2006day2_最大获利 网络流

    这道题是上一题的数据加强版,dinic表示毫无压力: #include<iostream> #include<cstdio> #include<cstring> # ...

  4. GS界面上显示的重要参考数据

    GS界面上显示的重要参考数据,这个是压测时重要参考 struct GSinfo { int revBuffNum; int sendBuffNum; int clientNum; int dbAskN ...

  5. python 二分法查找

    这个也是之前写的程序,现在把它贴上来 #!/usr/bin/python import os os.system('clear') def binsearch(seq,x,low,high): mid ...

  6. 百度之星A

    Scenic Popularity Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  7. Python:Python 3.x 的革新

    Python 3.x 版本在设计时为了向最好的语言前进,没有考虑向下兼容,许多针对早期 Python 版本设计的程序都无法正常运行.本文简单介绍了 Python 3.x 版本较之 2.x 版本语法上的 ...

  8. javascript设计模式--单例模式(Singleton)

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...

  9. 远程数据源Combobox

    Ext.define('bookInfo', {          extend: 'Ext.data.Model',//新类继承自model          fields: [{ name: 'b ...

  10. 由浅入深了解Thrift之客户端连接池化

    一.问题描述 在上一篇<由浅入深了解Thrift之服务模型和序列化机制>文章中,我们已经了解了thrift的基本架构和网络服务模型的优缺点.如今的互联网圈中,RPC服务化的思想如火如荼.我 ...