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

专业:商软2   姓名:卓嘉炜 学号:201406114243

一、 实验目的

  (1)掌握命令解释程序的原理;

  (2)掌握简单的DOS调用方法;

  (3)掌握C语言编程初步。

二、实验要求

编写类似于DOS,UNIX的命令行解释程序

  (1)自行定义系统提示符

  (2)自定义命令集(8-10个)

  (3)用户输入HELP以查找命令的帮助

  (4)列出命令的功能,区分内部还是外部命令

  (5)用户输入QUIT退出

  (6)内部命令有dir, cd, md, rd, cls, date, time, ren, copy等。

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

1. 源程序名:压缩包文件(命令解释.rar)中源程序名 miniOS.c

   可执行程序名:miniOS.exe

2.主要采用嵌套的方法来完成程序。字符串存到定义的数组内,若输入的命令是正确的,便会会显示命令的解释。(这次没用结构体)

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

if(strcmp(str,cmd[0])==0)
        {
            printf("dir     内部命令:显示一个目录中的文件和子目录\n");
        }
        else if(strcmp(str,cmd[1])==0)
        {
            printf("cd     内部命令:显示当前目录的名称或将其更改\n");
        }
        else if(strcmp(str,cmd[2])==0)
        {
            printf("md     内部命令:建立一个目录或文件夹.dos下面习惯叫目录,win下面习惯叫文件夹\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("data     内部命令:显示或设置日期\n");
        }
        else if(strcmp(str,cmd[6])==0) 
        {
            printf("time     内部命令:显示或设置系统时间\n");
        }
        else if(strcmp(str,cmd[7])==0)
        { 
            printf("ren     内部命令:重新命名文件,ren命令的格式是: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     建立一个目录或文件夹.dos下面习惯叫目录,win下面习惯叫文件夹\n");
            printf("rd     删除目录\n");
            printf("cls    清除屏幕\n");
            printf("data   显示或设置日期\n");
            printf("time   显示或设置系统时间\n");
            printf("ren    重新命名文件,ren命令的格式是:ren 源文件名目的文件名\n");
            printf("copy   将至少一个文件复制到另一个位置\n");
            printf("help   提供Windows命令的帮助信息\n");
            printf("quit   退出命令解释程序\n");
        }
        else if(strcmp(str,cmd[10])==0)
            return;
            else
        {
            printf("你输入错误的信息,请重新输入!\n");
        }
    }
}