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. 命令解释程序的原理:

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

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

    思考:命令名字表在C语言中如何实现?存放?

     

    1. 命令解释程序实现的两种方式 :

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

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

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

     

    1. 编程实现流程

    显示程序提示信息;

    While(1)

    { 显示提示符;

    接收键盘的字符串;

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

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

    显示退出程序信息;

    1. 参考结果图:
    1. 实验拓展

    1)        *如何真正实现dir、cls等DOS内部命令的功能?

    2)        **如何真正实现format、help等DOS外部命令的功能?

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 main()
     4 {
     5     
     6     char cmd[100];
     7     printf("Microsoft Windows SB [版本 5.1.2600]
    (C) 版权所有 1985-2001 Microsoft Corp.
    ");
     8     while(strcmp(cmd,"exit")!=0||strcmp(cmd,"quit")!=0)
     9     {
    10         
    11         printf("
    C:\Documents and Settings\Administrator>");
    12         gets(cmd);
    13         if(strcmp(cmd,"exit")==0)
    14             exit(0);
    15         else
    16         {
    17         if(strcmp(cmd,"quit")==0||strcmp(cmd,"dir")==0||(cmd[0]=="c"&&cmd[1]=="d")||strcmp(cmd,"md")==0||strcmp(cmd,"rd")==0||strcmp(cmd,"cls")==0||strcmp(cmd,"date")==0||strcmp(cmd,"time")==0||strcmp(cmd,"ren")==0||strcmp(cmd,"copy")==0)
    18         {
    19             if(strcmp(cmd,"dir")==0||strcmp(cmd,"cd")==0||(cmd[0]=="c"&&cmd[1]=="d")||strcmp(cmd,"cd")==0||strcmp(cmd,"md")==0||strcmp(cmd,"rd")==0||strcmp(cmd,"cls")==0||strcmp(cmd,"date")==0||strcmp(cmd,"time")==0||strcmp(cmd,"ren")==0||strcmp(cmd,"copy")==0)
    20             {
    21                 printf("
    内部命令
    
    ");
    22             }
    23             system(cmd);
    24         }
    25         else
    26             printf("
    命令出错!");
    27         }
    28     }
    29 }
  • 相关阅读:
    KnockoutJS 3.X API 第五章 高级应用(4) 自定义处理逻辑
    KnockoutJS 3.X API 第五章 高级应用(3) 虚拟元素绑定
    KnockoutJS 3.X API 第五章 高级应用(2) 控制后代绑定
    KnockoutJS 3.X API 第五章 高级应用(1) 创建自定义绑定
    KnockoutJS 3.X API 第四章(14) 绑定语法细节
    KnockoutJS 3.X API 第四章(13) template绑定
    KnockoutJS 3.X API 第四章 表单绑定(12) selectedOptions、uniqueName绑定
    KnockoutJS 3.X API 第四章 表单绑定(11) options绑定
    KnockoutJS 3.X API 第四章 表单绑定(10) textInput、hasFocus、checked绑定
    KnockoutJS 3.X API 第四章 表单绑定(9) value绑定
  • 原文地址:https://www.cnblogs.com/mxdmxdmxd78/p/5266092.html
Copyright © 2011-2022 走看看