1006实验一实验报告
13物联网工程 张学玲 201306104140
一、 实验目的
(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等。
根据要求,完成设计、编码、测试工作。
三、 实验方法、步骤及结果测试
- 源程序名:zxl.c
可执行程序名:zxl.exe
2.原理分析及步骤
原理分析:分别定义一个一维数组和一个二维数组,一位数组用于存放用户输入发命令,二维数组存放各种内部命令,当用户输入各个命令时,都有相对应的提示显示。
步骤:首先,定义一位数组用于存放用户输入发命令,二维数组存放各种内部命令;然后,用strcmp函数来判断用户输入的字符串是否与数组里的字符串相等,如果相等,则输出printf里的提示,如果不相等,则提示错误。
3.主要程序段及其解释
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char cmd[30][30]={"dir","cd","md","rd","cls","date","time","ren","copy","help","quit"};//定义了个二维数组,存放各种内部命令
char str[20]={0};//定义一个一维数组,用于存放用户输入发命令
while(1)
{
printf("Welcome to DOS!\nPlease enter the command:");
scanf("%s",&str);
if(strcmp(str,cmd[0])==0)//用了strcmp函数来判断字符串是否相等
{
printf("dir可查看当前所在目录的文件\n");
}
else if(strcmp(str,cmd[1])==0)
{
printf("cd可进入特定的目录\n");
}
else if(strcmp(str,cmd[2])==0)
{
printf("md可建立自定义文件夹\n");
}
else if(strcmp(str,cmd[3])==0)
{
printf("rd可删除特定的文件夹\n");
}
else if(strcmp(str,cmd[4])==0)
{
printf("cls有清屏功能\n");
}
else if(strcmp(str,cmd[5])==0)
{
printf("date可设置日期\n");
}
else if(strcmp(str,cmd[6])==0)
{
printf("time可设置或显示系统时钟\n");
}
else if(strcmp(str,cmd[7])==0)
{
printf("ren可改文件名\n");
}
else if(strcmp(str,cmd[8])==0)
{
printf("copy可复制信息\n");
}
else if(strcmp(str,cmd[9])==0)
{
printf("dir可查看当前所在目录的文件\n");
printf("cd可进入特定的目录\n");
printf("md 可建立自定义文件夹\n ");
printf("rd 可删除特定的文件夹\n");
printf("cls有清屏功能\n");
printf("date可设置日期\n");
printf("time可设置或显示系统时钟\n");
printf("ren可改文件名\n");
printf("copy可复制信息\n");
}
else if(strcmp(str,cmd[10])==0)
{
return 0;
}
else
{
printf("你输入错误的信息,请重新输入:\n");
}
}
return 0;
}
4.运行结果及分析
起始页面及help:
dir命令:
cd命令:
date命令:
time命令:
四、 实验总结
DOS命令解释程序的编写不是很难,但是做起来得花些时间。定义数组,用于存放命令,用strcmp函数来判断字符串是否相等。在运行的过程中也有出现错误,是二维数组里的数字设置得太小导致出现问题,经过修改,就没有错误了。利用if,else if 以及else将各个字符所代表的不同含义一一列举,这样子很清晰地呈现出程序整体的结构。