实验一 认识DOS
实验一、认识DOS实验
专业:物联网工程 姓名:柴铱琳 学号:201306104132
一、 实验目的
(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.源程序名:dos.c
2.可执行程序名:dos.exe
3.原理分析:主要算法采用if、else算法以及strcmp比较算法。先定义好一个数组,往里面输入事先定义好的11个字符,等待用户输入字符,然后通过函数的比较与选择,在屏幕上打印出所对应的解释。检测到输入QUIT字符则返回程序的开始;检测到输入没有被定义的字符则提示输入错误。
4.程序:
#include <stdio.h>
#include <string.h>
void main()
{
char ord[20][20]={"mem","arp","attrib","dir","set","pause","help","call","for","echo","QUIT"};
char str[20];
while(1)
{
printf("Please enter your order:");
gets(str); //接收用户输入的字符
if(strcmp(str,ord[0])==0) //字符串比较函数
printf("mem:查看CPU使用情况.\n");
else if(strcmp(str,ord[1])==0) //如果输入的字符与定义的相同,即等于0,则打印下列字符
printf("arp:查看和处理ARP缓存.\n");
else if(strcmp(str,ord[2])==0)
printf("attrib:文件/目录名,查看某文件/目录的属性.\n");
else if(strcmp(str,ord[3])==0)
printf("dir:查看文件,参数.\n");
else if(strcmp(str,ord[4])==0)
printf("set:显示当前所有的环境名称.\n");
else if(strcmp(str,ord[5])==0)
printf("pause:暂停批处理程序,并显示‘请按任意键继续’.\n");
else if(strcmp(str,ord[6])==0)
{
printf("mem:查看CPU使用情况.\n");
printf("arp:查看和处理ARP缓存.\n");
printf("attrib:文件/目录名,查看某文件/目录的属性.\n");
printf("dir:查看文件,参数.\n");
printf("set:显示当前所有的环境名称.\n");
printf("pause:暂停批处理程序,并显示请按任意键继续.\n");
printf("call:路径、批处理文件名.\n");
printf("for:对一组文件中的每一个文件执行某个特定命令.\n");
printf("echo:信息,在屏幕上显示出信息.\n");
}
else if(strcmp(str,ord[7])==0)
printf("call:路径、批处理文件名.\n");
else if(strcmp(str,ord[8])==0)
printf("for:对一组文件中的每一个文件执行某个特定命令.\n");
else if(strcmp(str,ord[9])==0)
printf("echo:信息,在屏幕上显示出信息.\n");
else if(strcmp(str,ord[10])==0)
return; //如果输入QUIT,则返回
else printf("Wrong!Enter again:\n");
}
}
5.流程图:
6.运行结果:
四、 实验总结
在实验的过程中,如何使程序能够辨别我输入的指令是否与原先定义的指令一致,是我认为最困难的一点。通过上网查阅资料以及对C语言的学习了解,最后选择了strcmp这一比较函数,将输入的指令与定义好的相比较,如果一致,则赋值为0,进入printf语句,在屏幕上打印出指令的内容。最终使程序能够成功实现想要的效果。