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

13物联网             黄鸿佳              201306104107

一. 实验目的

(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.源程序名:1.c

可执行文件名:1.exe

2.原理图分析和流程图

原理分析:将命令符用二维数组存储起来,然后将用户输入的命令符用另一数组存起来,然后将该命令与原有的命令逐一进行比较匹配,匹配相同的则输出相应信息,若比较后都不相同则提醒用户这个命令符不存在,重新输入。

3.主要程序及解释:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
main()
{

char *cmd[10]={"dir","cd","md","cls","date","time","copy","quit","help"};
char b[10];

//字符指针cmd用于存储命令符,数组b存储用户输入的命令符

int a; 
while(1){
printf("请你输入提示符,输入help可查看所有命令:>");
gets(b);

//输入的命令符与数组各元素进行比较匹配,匹配成功的显示相应信息

for(a=0;a<10;a++){
{
if(strcmp(b,cmd[0])==0)

//strcmp功能将两个参数进行比较,如果一致则为0
{
printf("类型:内部命令\n");
printf("作用:查看当前的目录\n");
printf("\n");
break;
}
else if(strcmp(b,cmd[1])==0)
{
printf("类型:内部命令\n");
printf("作用:显示当前目录的名称\n");
printf("\n");
break;
}
else if(strcmp(b,cmd[2])==0)
{
printf("类型:内部命令\n");
printf("作用:创建一个新目录\n");
printf("\n");
break;
}

else if(strcmp(b,cmd[3])==0)
{
printf("类型:内部命令\n");
printf("作用:清屏\n");
printf("\n");
break;
}
else if(strcmp(b,cmd[4])==0)
{
printf("类型:内部命令\n");
printf("作用:显示或设置日期\n");
printf("\n");
break;
}
else if(strcmp(b,cmd[5])==0)
{
printf("类型:内部命令\n");
printf("作用:显示或设置系统时间\n");
printf("\n");
break;
}

else if(strcmp(b,cmd[6])==0)
{
printf("类型:内部命令\n");
printf("作用:将至少一个文件复制到另一个位置\n");
printf("\n");
break;
}
else if(strcmp(b,cmd[7])==0)
{
return 0;

}
else if(strcmp(b,cmd[8])==0)
{
printf("类型:外部命令\n");
printf("dir 内部命令 显示一个目录中的文件和子目录。\n");
printf("cd 内部命令 显示当前目录的名称或将其更改。\n");
printf("md 内部命令 创建一个目录。\n");
printf("cls 内部命令 清除屏幕。\n");
printf("date 内部命令 显示或设置日期。\n");
printf("time 内部命令 内部命令显示或设置系统时间。\n");
printf("cope 内部命令 将至少一个文件复制到另一个位置。\n");
printf("help 外部命令 提供Windows命令的帮助信息。\n");
printf("quit 外部命令 退出命令解释程序\n");
printf("\n");

break;
}
else if(strcmp(b,cmd[a])!=0)
{
printf("这个命令不存在,请重新输入!\n");
printf("\n");
break;
}
}
}
}
}

4.运行结果及分析

提示输入

输入命令符后的显示

输入help可显示所有命令符及其作用

输入quit命令符

四.实验总结:

本次实验看起来容易,但是由于太久没有使用C语言的知识,一开始还是有点吃力的,在这个过程中遇到过用scanf的话输入错误的命令符将会不停的提示,后来改用了gets,另一个就是strcmp函数的使用,通过查找资料和同学讨论后终于学会运用这个函数,完成这个实验我的收获还是很大的,而且我也深刻地意识到一个道理,温故而知新。

实验一报告--认识DOS的更多相关文章

  1. 实验一、熟悉DOS命令

    实验一.熟悉DOS命令 实验一.熟悉DOS命令 一.        实验目的 1.从操作系统理论的观点来了解和掌握DOS有关用户接口的特点: 2.熟悉常用DOS操作命令(md.cd.rd.copy.m ...

  2. 20145204&20145212信息安全系统实验四报告

    20145204信息安全设计基础实验四报告 博客链接:信息安全设计基础实验

  3. 汇编语言程序入门实验一:在dos下对用户输入作出应答

    汇编语言程序入门实验一:在dos下对用户输入作出应答 1,背景 成功预言了今天要上计算机操作系统上机实验课,昨天预习后,今天的两个上机实验做得很成功.但是也有一些问题.问题1:学校的系统目前是wind ...

  4. 汇编语言程序入门实验二:在dos下建立子目录操作

    汇编语言程序入门实验二:在dos下建立子目录操作 1,背景 在读此文,并读懂前,建议读者先阅读这两篇博客 1,在dos环境下汇编语言程序设计入门(输出hello world)和masm32的下载.安装 ...

  5. 20172310 2017-2018-2 《程序设计与数据结构》实验三报告(敏捷开发与XP实践)

    20172310 2017-2018-2 <程序设计与数据结构>实验三报告(敏捷开发与XP实践) 课程:<程序设计与数据结构> 班级: 1723 姓名: 仇夏 学号:20172 ...

  6. 20172301 《Java软件结构与数据结构》实验三报告

    20172301 <Java软件结构与数据结构>实验三报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 郭恺 学号:20172301 实验教师:王志强老师 ...

  7. 20172301 《Java软件结构与数据结构》实验二报告

    20172301 <Java软件结构与数据结构>实验二报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 郭恺 学号:20172301 实验教师:王志强老师 ...

  8. 20172329 2018-2019 《Java软件结构与数据结构》实验三报告

    20172329 2018-2019-2 <Java软件结构与数据结构>实验三报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 王文彬 学号:2017232 ...

  9. 20172329 2018-2019-2 《Java软件结构与数据结构》实验二报告

    20172329 2018-2019-2 <Java软件结构与数据结构>实验二报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 王文彬 学号:2017232 ...

随机推荐

  1. [原创.数据可视化系列之二]使用cesium三维地图展示美国全球军事基地分布

    基于浏览器的三维地图还算是一个比较高冷的东西,最主要的技术难点是如何在浏览器上 多快好省 的显示三维数据,很遗憾,还真的没有太好的的方案,只能说还有可行的方案. 很久之前用过skyline,使用CS居 ...

  2. 336-Palindrome Pairs

    336-Palindrome Pairs Given a list of unique words, find all pairs of distinct indices (i, j) in the ...

  3. Setup Factory 关闭正在运行的程序

    --在全局函数中增加 适用用Setup Factory 9 function FindAndCloseProcessByName(strName)  local tblProcesses = Wind ...

  4. selenium--环境搭建步骤

    1.安装Python 2.安装setuptools 3.安装pip(Python3.X自带pip) 4.安装selenium(步骤在另一个博客中已提及)

  5. HDU 1285 确定比赛名次 拓扑排序模板题

    http://acm.hdu.edu.cn/showproblem.php?pid=1285 #include <cstdio> #include <cstdlib> #inc ...

  6. 神经网络(python源代码)

    神经网络的逻辑应该都是熟知的了,在这里想说明一下交叉验证 交叉验证方法: 看图大概就能理解了,大致就是先将数据集分成K份,对这K份中每一份都取不一样的比例数据进行训练和测试.得出K个误差,将这K个误差 ...

  7. HR常用事务代码

    HR TCODE 描述     PA30 维护人力资源主数据 PA40 人事活动

  8. 【经验记录】Jconsole Jvisualvm 监控Tomcat

    环境:centos 6 1.首先检查hostname是否正确,输入以下命令 hostname -i 如果输出机器ip,则表示正确,如果输出 hostname: Unknown host 查看/etc/ ...

  9. 解决libcurl7.50.3在windows XP SP3 VC++ 6.0下编译报错 unresolved external symbol __imp__IdnToAscii@20 unresolved external symbol __imp__IdnToUnicode@20

    错误重现: --------------------Configuration: curl - Win32 LIB Debug DLL Windows SSPI DLL WinIDN--------- ...

  10. 转:亿级Web系统的高容错性实践(好博文)

    亿级Web系统的高容错性实践 亿级Web系统的高容错性实践 背景介绍 大概三年前,我在腾讯负责的活动运营系统,因为业务流量规模的数倍增长,系统出现了各种各样的异常,当时,作为开发的我,7*24小时地没 ...