实验一、DOS命令解释程序的编写

专业:物联网工程   姓名:黄淼  学号:201306104145

一、 实验目的

(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等。

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

  1. 源程序名:压缩包文件(rar或zip)中源程序名 hm.c

可执行程序名:hm.exe

2.原理分析及流程图

采用数组来存储功能

关键函数:strcmp(p,h[10])==0)来判断用户输入的字符串是否与该数组元素符合

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

#include<stdio.h>

#include<string.h>

main()

{

char p[11];

char h[11][11]={"dir","cd","md","rd","cls","date","time",

"ren","copy","help","arp","start","mem","winver","format","quit"};

printf("帮助:\n");

printf("内部功能 :\n");

printf("1:dir目录:\n");

printf("2:cd进入目录:\n");

printf("3:md建立文件夹\n");

printf("4:rd删除文件夹\n");

printf("5:cls清屏\n");

printf("6:date设置日期\n");

printf("7:time设置或显示系统时间\n");

printf("8:ren改文件名\n");

printf("9:copy复制\n");

printf("9:copy复制\n");

printf("10:help帮助\n");

printf("11:arp退出\n");

printf("12:start开始\n");

printf("13:mem查看cpu\n");

printf("14:winver弹出窗口\n");

printf("15:format盘符\n");

printf("16:quit退出\n");

while(1)

{

gets(p);

if(strcmp(p,h[15])==0) break;

else if(strcmp(p,h[9])==0)

{

printf("帮助:\n");

printf("内部功能 :\n");

printf("1:dir目录\n");

printf("2:cd进入目录:\n");

printf("3:md建立文件夹\n");

printf("4:rd删除文件夹\n");

printf("5:cls清屏\n");

printf("6:date设置日期\n");

printf("7:time设置或显示系统时间\n");

printf("8:ren改文件名\n");

printf("9:copy复制\n");

printf("10:help帮助\n");

printf("11:arp退出\n");

printf("12:start开始\n");

printf("13:mem查看cpu\n");

printf("14:winver弹出窗口\n");

printf("15:format盘符\n");

printf("16:quit退出\n");

}

else if(strcmp(p,h[0])==0)  printf("dir(内部功能):目录\n");

else if(strcmp(p,h[1])==0)  printf("cd(内部功能):进入目录\n");

else if(strcmp(p,h[2])==0)  printf("md(内部功能):建立文件夹\n");

else if(strcmp(p,h[3])==0)  printf("rd(内部功能):删除文件夹\n");

else if(strcmp(p,h[4])==0)  printf("cls(内部功能):清屏\n");

else if(strcmp(p,h[5])==0)  printf("date(内部功能):设置日期"\n);

else if(strcmp(p,h[6])==0)  printf("time(内部功能):设置或显示系统时间\n");

else if(strcmp(p,h[7])==0)  printf("ren(内部功能):改文件名\n");

else if(strcmp(p,h[8])==0)  printf("copy(内部功能):复制\n");

else if(strcmp(p,h[9])==0)  printf("help(内部功能):帮助\n");

else if(strcmp(p,h[10])==0)  printf("arp 查看和处理ARP缓存\n");

else if(strcmp(p,h[11])==0)  printf("start 程序名或命令 /max 或/min 新开一个新窗口并最大化(最小化)运行某程序或命令 \n");

else if(strcmp(p,h[12])==0)  printf("mem 查看cpu使用情况\n");

else if(strcmp(p,h[13])==0)  printf("winver 弹出一个窗口显示版本信息\n");

else if(strcmp(p,h[14])==0)  printf("format 盘符 /FS:类型 格式化磁盘,类型:FAT、FAT32、NTFS\n");

else printf("出入错误,请重新输入!\n");

}

}

4.运行结果及分析

进入程序之前会有提示帮助:

用户输入help也会显示帮助:

输入dir便会显示如图所示的图片:

输入错误便会提示:

输入quit则直接退出:

四、 实验总结

在大一的时候就已经学过了C语言,所以,这次的作业比较轻松,不过一开始在运行的时候不知道用什么来运行程序,期待下一次的作业。

DOS命令解释程序的编写的更多相关文章

  1. 实验一 DOS命令解释程序的编写

    一.目的和要求 1. 实验目的 (1)认识DOS: (2)掌握命令解释程序的原理: (3)掌握简单的DOS调用方法: (4)掌握C语言编程初步. 2.实验要求 编写类似于DOS,UNIX的命令行解释程 ...

  2. 关于dos命令行脚本编写

    dos常用命令另查 开始之前先简单说明下cmd文件和bat文件的区别:在本质上两者没有区别,都是简单的文本编码方式,都可以用记事本创建.编辑和查看.两者所用的命令行代码也是共用的,只是cmd文件中允许 ...

  3. C#程序集系列01,用记事本编写C#,IL代码,用DOS命令编译程序集,运行程序

    本篇主要体验:编写C#,IL代码,用"VS2012开发人员命令提示"编译成程序集,并运行程序. □ C#文件编译为程序集 →在F盘创建as文件夹→在as文件夹下创建MyClass. ...

  4. 实验一 命令解释程序cmd的编写

    #include<stdio.h>#include<stdlib.h>#include<string.h>#define N 30main(){ char str[ ...

  5. system , DOS 命令

    其实C语言也可以控制电脑关机什么的啊,以前竟然无知的连这个都不知道.悲哀啊.让各路大牛尽情嘲笑啊.. #include<stdio.h> #include<stdlib.h> ...

  6. 【转载】DOS 系统和 Windows 系统有什么关系?为什么windows系统下可以执行dos命令?

    作者:bombless 因为不同的系统都叫 Windows ,这些系统在界面上也有一定连续性并且因此可能造成误解,所以有必要稍微梳理一下几个不同的 Windows 系统.首先是 DOS 上的一个图形界 ...

  7. DOS命令大全!

    一)MD——建立子目录 1.功能:创建新的子目录 2.类型:内部命令 3.格式:MD[盘符:][路径名]〈子目录名〉 4.使用说明: (1)“盘符”:指定要建立子目录的磁盘驱动器字母,若省略,则为当前 ...

  8. c#执行Dos命令

    一个执行Dos命令的窗口程序,与各位分享.   效果图:     具体实现在代码中有详细的注释,请看代码.   实现执行CMD命令的核心代码(Cmd.cs):   [csharp]   using S ...

  9. DOS命令教学之详解批处理

    批处理文件是由一个或一个以上的DOS命令及可执行命令组成的带有扩展名.BAT的文件.当用户以批处理文件名为命令时,DOS会自动依次执行文件中的命令.批处理文件的特点是一次建立可多次执行.下面,寻修网h ...

随机推荐

  1. 装多系统删除某个系统后,如何恢复ubuntu引导

    在重装系统或者再装多个系统后可能会出现ubuntu的引导文件不存在的情况,windows系列的引导文件可以用winpe修复,但是ubuntu就不可以,虽然网上很多种修复ubuntu的引导文件 方式,但 ...

  2. (转载)CSV 文件处理 PERL

    http://cn.perlmaven.com/how-to-read-a-csv-file-using-perl http://search.cpan.org/~hmbrand/Text-CSV_X ...

  3. Hibernate,JPA注解@PrimaryKeyJoinColumn

    一对一(One-to-one),主键关联 用例代码如下: 数据库DDL语句 1,CAT表 create table CAT ( id CHAR) not null, create_time ), up ...

  4. Oracle触发器使用介绍

    触发器,函数,包都是可以再生利用的东西,所以在创建的时候都要用到create or replace这个万能语句,接着就是主角trigger的出现了,主角出现还需要一点点波动,通常大人物都不是随随便便就 ...

  5. MyBatis 判断条件为等于的问题

    在用MyBatis操作数据库的时候相信很多人都用到,当在判断null, 大于,大于等于,小于,小于等于,不等于时估计很多都用到,比较容易实现了,这里就省略了,但唯独判断条件为等于时估计蛮多人遇到坑了, ...

  6. 通过HtmlEmail 发送邮件

    今天第一次来上海市虹口图书馆上自习,感觉还是很爽的.自己撸代码学会了发送邮件.啥都不说了,直接撸代码吧! 首先 必须引进来三个jar包: compile 'javax.mail:mail:1.4.7' ...

  7. python day6 面向对象

    把一个类变成具体的实例化的过程叫做类 实例化:把一个类变成一个具体对象的过程 __init__  构造函数,在实例化时初始化数据 __init__方法的第一个参数永远是self,表示创建的实例本身,因 ...

  8. Cookie机制(会话cookie和持久化cookie)在客户端保持HTTP状态信息的方案

    1. Cookie只有一个name和一个value,不同于map;购物车设计的时候需要cookie,获取购物车的cookie id,以便于将物品多次放入购物车: 2.cookie获取了其地址,并且可以 ...

  9. mysql一些常用命令总结

    mysql时间戳转日期格式SELECT FROM_UNIXTIME(add_time,'%Y-%m-%d %H:%i:%s') FROM `wh5_username` where id=23; 按in ...

  10. Cube Stacking

    Cube Stacking Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 21350 Accepted: 7470 Case T ...