热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

实验一、命令解释程序的编写一、实验目的(1)掌握命令解释程序的原理;(2)掌握简单的DOS调用方法࿱

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

    (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]\n");
5 printf("(C) 版权所有 1985-2001 Microsoft Corp.\n");
6 while(strcmp(str,"quit")!=0)//循环
7
8 {
9 printf("\nC:\\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 命令名\n");
16 display(cm);
17 flag=true;
18 }else{
19 for(int i=0;i)
20 {
21 if(strcmp(str,cm[i].cmd)==0) //比较用户输入的字符串与文件存储的关键字命令名称是否相等
22 {
23 if(cm[i].post==1)
24 {
25 printf("'%s' 内部命令输入正确!\n该命令作用是:%s\n",str,cm[i].function);
26 printf("%s\n",&cm[i].parameters);
27 }
28 else
29 {
30 printf("'%s' 外部命令输入正确!\n该命令作用是:%s\n",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' 不是内部或外部命令,也不是可运行的程序\n或批处理文件。\n",str);
40 }
41 }
42 }
43 printf("\n程序结束!\n\n");
44 }

 

4.运行结果及分析:

运行结果与预期一致。

四、 实验总结

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

 

转:https://www.cnblogs.com/chengyansheng/p/5316981.html



推荐阅读
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • c语言\n不换行,c语言printf不换行
    本文目录一览:1、C语言不换行输入2、c语言的 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
  • C语言常量与变量的深入理解及其影响
    本文深入讲解了C语言中常量与变量的概念及其深入实质,强调了对常量和变量的理解对于学习指针等后续内容的重要性。详细介绍了常量的分类和特点,以及变量的定义和分类。同时指出了常量和变量在程序中的作用及其对内存空间的影响,类似于const关键字的只读属性。此外,还提及了常量和变量在实际应用中可能出现的问题,如段错误和野指针。 ... [详细]
  • 实现一个通讯录系统,可添加、删除、修改、查找、显示、清空、排序通讯录信息
    本文介绍了如何实现一个通讯录系统,该系统可以实现添加、删除、修改、查找、显示、清空、排序通讯录信息的功能。通过定义结构体LINK和PEOPLE来存储通讯录信息,使用相关函数来实现各项功能。详细介绍了每个功能的实现方法。 ... [详细]
  • 本文介绍了一种图片处理应用,通过固定容器来实现缩略图的功能。该方法可以实现等比例缩略、扩容填充和裁剪等操作。详细的实现步骤和代码示例在正文中给出。 ... [详细]
  • 如何使用Python从工程图图像中提取底部的方法?
    本文介绍了使用Python从工程图图像中提取底部的方法。首先将输入图片转换为灰度图像,并进行高斯模糊和阈值处理。然后通过填充潜在的轮廓以及使用轮廓逼近和矩形核进行过滤,去除非矩形轮廓。最后通过查找轮廓并使用轮廓近似、宽高比和轮廓区域进行过滤,隔离所需的底部轮廓,并使用Numpy切片提取底部模板部分。 ... [详细]
  • c语言基础编写,c语言 基础
    本文目录一览:1、C语言如何编写?2、如何编写 ... [详细]
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼*madebyebhrz*#include#include#include#include#include#include#include ... [详细]
author-avatar
小新没蜡笔775
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有