zoukankan      html  css  js  c++  java
  • 实验一 命令解释程序的编写

    一、目的和要求

    1. 实验目的

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

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

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

    2.实验内容和要求

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

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

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

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

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

    (5)用户输入QUIT退出

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

    二、实验环境

    1.PC微机

    2.Windows 操作系统

    3.C/C++程序开发集成环境

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

         1.源程序名:压缩包文件(rarzip)中源程序名dos.c

       可执行程序名:xhl.exe

     2.原理分析及流程图

    1. 命令解释程序的原理:

      命令解释程序的主要功能是:

            1、 接受和执行一条用户从键盘输入的命令,它通常保存一张命令名字(动词)表,其中记录着所有操作命令及其处理程序的入口地址或有关信息。

        2、命令解释程序实现的两种方式 :

          1) 一种是它自身包含了命令的执行代码;

          2) 另一种是由专门的“系统程序” 实现,自身不含命令处理代码,也不进行处理,仅仅把这条命令对应的命令文件装入内存执行。

    例如:在DOS操作系统中,dir、cd、cls等命令的执行代码包含在系统自身内核中,称为内部命令;format、help等命令的执行代码在外部文件中,称为外部命令。

                3、编程实现流程

        显示程序提示信息;

        While(1)

        { 显示提示符;

        接收键盘的字符串;

        判断是否quit程序退出指令,是则退出;

        判断是否内部命令,并给出相应的信息,否则给出错误信息;

        }

        显示退出程序信息;

               4. 源代码:

    #include<stdio.h>
    #include <stdlib.h>
    # include<string.h>
    main()
    {    
    char cmd[30][30]={"dir","cd","md","rd","cls","date","time","ren", "copy","quit","help"};
    char str[10];
    
    int i;
    
    printf("Microsoft Windows XP [版本 5.1.2600]
    ");
    printf("(C) 版权所有 1985-2001 Microsoft Corp.
    
    ");
    
    while(1){
    
    printf("c:Documents and SettingsAdministrator>");
    gets(str);
    
    
    for(i=0;i<20;i++){
    
    {
    
    if(strcmp(str,cmd[0])==0)
    {
    printf("类型:内部命令
    ");
    printf("查看当前的目录···
    ");
    printf("
    ");
    printf("
    ");
    break;
    }
    else if(strcmp(str,cmd[1])==0)
    {
    printf("类型:内部命令
    ");
    printf("显示当前目录的名称···
    ");
    printf("
    ");
    printf("
    ");
    break;
    }
    else if(strcmp(str,cmd[2])==0)
    {
    printf("类型:内部命令
    ");
    printf("创建一个新目录···
    ");
    printf("
    ");
    printf("
    ");
    break;
    }
    else if(strcmp(str,cmd[3])==0)
    {
    printf("类型:内部命令
    ");
    printf("删除该目录....
    ");
    printf("
    ");
    printf("
    ");
    break;
    }
    else if(strcmp(str,cmd[4])==0)
    {
    
    printf("类型:内部命令
    ");
    printf("清屏···
    ");
    
    printf("
    ");
    printf("
    ");
    break;
    }
    else if(strcmp(str,cmd[5])==0)
    {
    printf("类型:内部命令
    ");
    printf("显示或设置日期···
    ");
    printf("
    ");
    printf("
    ");
    break;
    }
    else if(strcmp(str,cmd[6])==0)
    {
    printf("类型:内部命令
    ");
    printf("显示或设置系统时间···
    ");
    printf("
    ");
    printf("
    ");
    break;
    }
    else if(strcmp(str,cmd[7])==0)
    {
    printf("类型:内部命令
    ");
    printf("重命名文件···
    ");
    printf("
    ");
    printf("
    ");
    break;
    }
    else if(strcmp(str,cmd[8])==0)
    {
    printf("类型:内部命令
    ");
    printf("将至少一个文件复制到另一个位置···
    ");
    printf("
    ");
    printf("
    ");
    break;
    }
    
    
    
    else if(strcmp(str,cmd[9])==0)
    {
    return 0;
    
    }
    else if(strcmp(str,cmd[10])==0)
    {
    
    printf("类型:外部命令
    ");
    printf("dir	内部命令 显示一个目录中的文件和子目录。
    ");
    printf("cd	内部命令 显示当前目录的名称或将其更改。
    ");
    printf("md	内部命令 创建一个目录。
    ");
    printf("rd	内部命令 删除目录。.
    ");
    printf("cls	内部命令 清除屏幕。
    ");
    printf("date	内部命令 显示或设置日期。
    ");
    printf("time	内部命令 内部命令显示或设置系统时间。
    ");
    printf("ren	内部命令 重新命名文件。
    ");
    printf("cope	内部命令 将至少一个文件复制到另一个位置。
    ");
    printf("help	外部命令 提供Windows命令的帮助信息。
    ");
    printf("quit	外部命令 退出命令解释程序
    ");
    printf("
    ");
    printf("
    ");
    /* printf("CALL	从一个批处理程序调用这一个。
    ");
    printf("CMD	打开另一个Windows命令解释窗口。
    ");
    printf("COLOR	设置默认控制台前景和背景颜色。
    "); 
    printf("DEL	删除至少一个文件。
    "); 
    printf("EXIT	退出命令解释程序。
    "); 
    printf("FIND	在一个或多个文件中搜索一个文本字符串。
    ");
    printf("MKDIR	创建一个目录。
    ");
    printf("MODE	配置系统设备。
    ");
    printf("PRINT	打印一个文本文件。
    ");
    printf("REPLACE	替换文件。
    ");
    printf("RENAME	重新命名文件。
    ");*/
    break;
    
    }else if(strcmp(str,cmd[i])!=0){
    printf("此命令不是内部或外部命令,也不是可运行的程序或批处理文件
    ");
    printf("
    ");
    break;}
    
    } 
    } 
    }
    
    }

    5.结果参考图

         

  • 相关阅读:
    HTML ASCII 参考手册
    linux给用户赋予root权限
    Oracle系列教程之一软件安装与卸载
    Office VBA 参考
    Web API 接口参考
    maven setting.xml
    maven仓库网址
    The chance for love doesn't come around every day.
    webstrom使用vue-cli时 遇到的一些问题
    vue2.0 + webpack2.0 配置
  • 原文地址:https://www.cnblogs.com/xhlbk/p/5321319.html
Copyright © 2011-2022 走看看