实验一 操作系统模仿cmd
2016-03-25 12:01
155 查看
实验一、命令解释程序的编写
专业:商软(2)班 姓名:王俊杰 学号:201406114252
一、实验目的
(1)掌握命令解释程序的原理;
(2)掌握简单的DOS调用方法;
(3)掌握C语言编程初步。
二、实验内容和要求
编写类似于DOS,UNIX的命令行解释程序
(1)自行定义系统提示符
(2)自定义命令集(8-10个)
(3)用户输入HELP以查找命令的帮助
(4)列出命令的功能,区分内部还是外部命令
(5)用户输入QUIT退出
(6)内部命令有dir, cd, md, rd, cls, date, time, ren, copy等。
三、实验方法、步骤及结果测试
1. 源程序名:压缩包文件中源程序名MiniOS.cpp
可执行程序名:MiniOS.exe
2. 原理分析及流程图
本次实验主要是把命令放到记事本里面,最后通过程序来读取文档,这样的做法主要是方便更改数据。
最后通过用户输入的字符串,比较是否与记事本里面的命令名一样,相同则输出该命令的所有信息,
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#define N 200
struct CMD
{
int a;
char abc[50];
char abc1[100];
};
struct CMD cmd
;
main()
{
FILE *fp;
int i,n;
char str
;
printf("Micrcmdoft Windows [版本 6.1.7601 ]\n");
printf("版本所有 <c> 2009 Micrcmdoft Corporation。保留所有权利\n\n");
fp=fopen("cmd.txt","r+");
for(i=0;!feof(fp);i++)
{
fscanf(fp,"%s%s%d",cmd[i].abc,cmd[i].abc1,&cmd[i].a);
n=i;
}
fclCMDe(fp);
while(1){
printf("C:\\Users\\Administrator.USER-20151120JI>");
gets(str);
for(i=0;i<=n;i++)
{
if(stricmp(str,"help")==0)
{
for(i=0;i<=n;i++)
{
printf("%s\t%s\n",cmd[i].abc,cmd[i].abc1);
}
break;
}
if((stricmp(str,cmd[i].abc)==0)&&(cmd[i].a==1))
{
printf("\"%s\"是内部命令,输入正确\n",cmd[i].abc);
printf("该命令的作用是:%s\n",cmd[i].abc1);
break;
}
else if((stricmp(str,cmd[i].abc)==0)&&(cmd[i].a==0))
{
printf("\"%s\"是外部命令,输入正确\n",cmd[i].abc);
printf("该命令的作用是:%s\n",cmd[i].abc1);
break;
}
else if((stricmp(str,cmd[i].abc)!=0)&&(i==n))
{
printf("'%s'不是内部或外部命令,也不是可运行的程序或批处理文件\n",str);
}
}
printf("\n");
}
}
专业:商软(2)班 姓名:王俊杰 学号:201406114252
一、实验目的
(1)掌握命令解释程序的原理;
(2)掌握简单的DOS调用方法;
(3)掌握C语言编程初步。
二、实验内容和要求
编写类似于DOS,UNIX的命令行解释程序
(1)自行定义系统提示符
(2)自定义命令集(8-10个)
(3)用户输入HELP以查找命令的帮助
(4)列出命令的功能,区分内部还是外部命令
(5)用户输入QUIT退出
(6)内部命令有dir, cd, md, rd, cls, date, time, ren, copy等。
三、实验方法、步骤及结果测试
1. 源程序名:压缩包文件中源程序名MiniOS.cpp
可执行程序名:MiniOS.exe
2. 原理分析及流程图
本次实验主要是把命令放到记事本里面,最后通过程序来读取文档,这样的做法主要是方便更改数据。
最后通过用户输入的字符串,比较是否与记事本里面的命令名一样,相同则输出该命令的所有信息,
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#define N 200
struct CMD
{
int a;
char abc[50];
char abc1[100];
};
struct CMD cmd
;
main()
{
FILE *fp;
int i,n;
char str
;
printf("Micrcmdoft Windows [版本 6.1.7601 ]\n");
printf("版本所有 <c> 2009 Micrcmdoft Corporation。保留所有权利\n\n");
fp=fopen("cmd.txt","r+");
for(i=0;!feof(fp);i++)
{
fscanf(fp,"%s%s%d",cmd[i].abc,cmd[i].abc1,&cmd[i].a);
n=i;
}
fclCMDe(fp);
while(1){
printf("C:\\Users\\Administrator.USER-20151120JI>");
gets(str);
for(i=0;i<=n;i++)
{
if(stricmp(str,"help")==0)
{
for(i=0;i<=n;i++)
{
printf("%s\t%s\n",cmd[i].abc,cmd[i].abc1);
}
break;
}
if((stricmp(str,cmd[i].abc)==0)&&(cmd[i].a==1))
{
printf("\"%s\"是内部命令,输入正确\n",cmd[i].abc);
printf("该命令的作用是:%s\n",cmd[i].abc1);
break;
}
else if((stricmp(str,cmd[i].abc)==0)&&(cmd[i].a==0))
{
printf("\"%s\"是外部命令,输入正确\n",cmd[i].abc);
printf("该命令的作用是:%s\n",cmd[i].abc1);
break;
}
else if((stricmp(str,cmd[i].abc)!=0)&&(i==n))
{
printf("'%s'不是内部或外部命令,也不是可运行的程序或批处理文件\n",str);
}
}
printf("\n");
}
}
相关文章推荐
- vim中方向键无法正常使用解决
- tabcontrol 隐藏标签
- 为镶嵌数据集批量创建快视图
- PHP curl https访问问题
- How to upgrade boost libary using apt-get ?
- numpy.ones_like(a, dtype=None, order='K', subok=True)返回和原矩阵一样形状的1矩阵
- SQL Server数据类型转换方法
- 内存碎片以及垃圾回收
- android开发之应用Crash自动抓取Log_自动保存崩溃日志到本地
- pb相关小技巧或用法
- 179. Largest Number
- map 和 hash_map 的使用方法
- ubuntu 忘记用户名或密码的重置方法
- Java拾遗——存储位置
- char* 和char[]的区别
- bat调用python命令
- stcmp函数的实现
- Android Studio引用第三方项目
- react、redux什么的都用起来 【3】穿越spa的路由
- numpy.zeros(shape, dtype=float, order='C')