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 }
  • 相关阅读:
    P1856 [USACO5.5]矩形周长Picture 题解
    题解 SP703 【SERVICE
    题解 P2893 【[USACO08FEB]Making the Grade G】
    P4551 最长异或路径 题解
    P3834 【模板】可持久化线段树 2(主席树)题解
    用正则表达式验证用户名输入的正确性
    软件测试杂谈
    next_permutation
    刊物论文级别
    android 之常见事件响应的实现方式对比
  • 原文地址:https://www.cnblogs.com/mxdmxdmxd78/p/5266092.html
Copyright © 2011-2022 走看看