• 操作系统实验一、 命令解释程序的编写


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

    一、 实验目的

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

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

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

    二、 实验内容和要求

         1、实验内容:根据教师指定的实验课题,完成设计、编码、测试工作。

         2、实验要求:编写类似于DOS,UNIX的命令行解释程序

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

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

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

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

          (5)用户输入QUIT退出

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

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

          1、实验方法:运用C语言中的while循环语句来控制整个命令解释程序,在循环内运用if和else if语句,条件就利用strcmp函数进行筛选。

          2、实验步骤:先定义两个字符串数组,一个存放输入的显示提示符,另一个提前定义好相关命令dir, cd, md, rd, cls, date, time, ren, copy等。然后用while循环语句嵌套if和else if语句。当输入命令正确显示此命令的解释,若输入为外部命令,显示输入错误需重新输入。

          3、源代码:

     1 void process(struct Cmd cm[Max])
     2 {
     3 char str[10];
     4 printf("Microsoft Windows XP [版本 5.1.2600]
    ");
     5 printf("(C) 版权所有 1985-2001 Microsoft Corp.
    ");
     6 while(strcmp(str,"quit")!=0)//循环
     7 
     8 { 
     9 printf("
    C:\Documents and Settings\hskd>");
    10 scanf("%s",str);
    11 strlwr(str); 
    12 bool flag=false;
    13 if(strcmp(str,"help")==0)
    14 {
    15 printf("有关某个命令的详细信息,请键入 HELP 命令名
    ");
    16 display(cm);
    17 flag=true;
    18 }else{
    19 for(int i=0;i<count;i++)
    20 {
    21 if(strcmp(str,cm[i].cmd)==0) //比较用户输入的字符串与文件存储的关键字命令名称是否相等
    22 {
    23 if(cm[i].post==1)
    24 {
    25 printf("'%s' 内部命令输入正确!
    该命令作用是:%s
    ",str,cm[i].function);
    26 printf("%s
    ",&cm[i].parameters);
    27 }
    28 else
    29 {
    30 printf("'%s' 外部命令输入正确!
    该命令作用是:%s
    ",str,cm[i].function);
    31 printf("%s",&cm[i].parameters);
    32 }
    33 flag=true;
    34 break;
    35 }
    36 }
    37 if(!flag){
    38 if(strcmp(str,"quit")!=0)
    39 printf("'%s' 不是内部或外部命令,也不是可运行的程序
    或批处理文件。
    ",str);
    40 }
    41 }
    42 }
    43 printf("
    程序结束!
    
    ");
    44 }

    4.运行结果及分析:

    运行结果与预期一致。

    四、 实验总结

         在这次用C语言编写系统命令解程序中,不仅加强了对命令程序的编译思路,同时回顾了C语言对检索调用函数的使用,对以往大一的编写函数进行回忆和加深使用,在写解释程序中,从刚开始的一味用代码进行文字数据输出,到调用数组和循环来化简代码量,达到一致的效果。 

  • 相关阅读:
    npm命令
    前端单元测试工具karma和jest
    加解密学习之--模运算与经典密码学
    数据结构之-翻转二叉树
    数据结构之-链表倒转
    转载:MQ
    分布式ID生成器 待整理
    软件开发中的负载均衡
    制作软件过程中所产出的文档(请补充)
    多线程的创建
  • 原文地址:https://www.cnblogs.com/chengyansheng/p/5316981.html
Copyright © 2020-2023  润新知