实验一 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("类型:内部命令
");
printf("作用:查看当前的目录
");
printf("
");
break;
}
else if(strcmp(b,cmd[1])==0)
{
printf("类型:内部命令
");
printf("作用:显示当前目录的名称
");
printf("
");
break;
}
else if(strcmp(b,cmd[2])==0)
{
printf("类型:内部命令
");
printf("作用:创建一个新目录
");
printf("
");
break;
}
else if(strcmp(b,cmd[3])==0)
{
printf("类型:内部命令
");
printf("作用:清屏
");
printf("
");
break;
}
else if(strcmp(b,cmd[4])==0)
{
printf("类型:内部命令
");
printf("作用:显示或设置日期
");
printf("
");
break;
}
else if(strcmp(b,cmd[5])==0)
{
printf("类型:内部命令
");
printf("作用:显示或设置系统时间
");
printf("
");
break;
}
else if(strcmp(b,cmd[6])==0)
{
printf("类型:内部命令
");
printf("作用:将至少一个文件复制到另一个位置
");
printf("
");
break;
}
else if(strcmp(b,cmd[7])==0)
{
return 0;
}
else if(strcmp(b,cmd[8])==0)
{
printf("类型:外部命令
");
printf("dir 内部命令 显示一个目录中的文件和子目录。
");
printf("cd 内部命令 显示当前目录的名称或将其更改。
");
printf("md 内部命令 创建一个目录。
");
printf("cls 内部命令 清除屏幕。
");
printf("date 内部命令 显示或设置日期。
");
printf("time 内部命令 内部命令显示或设置系统时间。
");
printf("cope 内部命令 将至少一个文件复制到另一个位置。
");
printf("help 外部命令 提供Windows命令的帮助信息。
");
printf("quit 外部命令 退出命令解释程序
");
printf("
");
break;
}
else if(strcmp(b,cmd[a])!=0)
{
printf("这个命令不存在,请重新输入!
");
printf("
");
break;
}
}
}
}
}
4.运行结果及分析
提示输入
输入命令符后的显示
输入help可显示所有命令符及其作用
输入quit命令符
四.实验总结:
本次实验看起来容易,但是由于太久没有使用C语言的知识,一开始还是有点吃力的,在这个过程中遇到过用scanf的话输入错误的命令符将会不停的提示,后来改用了gets,另一个就是strcmp函数的使用,通过查找资料和同学讨论后终于学会运用这个函数,完成这个实验我的收获还是很大的,而且我也深刻地意识到一个道理,温故而知新。