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 }
  • 相关阅读:
    AX ERROR: Could not find my mock parent, most likely I am stale 不及格的程序员
    利用Segue在视图控制器间传值的问题 不及格的程序员
    Creating a Singleton Instance 不及格的程序员
    iPad 通知 UIKeyboardWillShowNotification 不会在keyBoard处在Undock状态下接到通知 不及格的程序员
    Why RootViewController's view is rotated Automatically by System when the app first loaded? 不及格的程序员
    如何弹出UIDatePicker最好 不及格的程序员
    jQuery开始做恶了 不及格的程序员
    what is the SEL,id and IMP,Class ,Method? 不及格的程序员
    Objectivec 字符串比较的陷井 不及格的程序员
    Unable to create any keyboard shortcuts after the iOS 6.1.3 update on iPad. 不及格的程序员
  • 原文地址:https://www.cnblogs.com/mxdmxdmxd78/p/5266092.html
Copyright © 2011-2022 走看看