实验一 操作系统模仿cmd

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

专业:商软(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[N];
main()
{
FILE *fp;
int i,n;
char str[N];
printf("Micrcmdoft Windows [版本 6.1.7601 ] ");
printf("版本所有 <c> 2009 Micrcmdoft Corporation。保留所有权利 ");
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 %s ",cmd[i].abc,cmd[i].abc1);
}
break;
}

if((stricmp(str,cmd[i].abc)==0)&&(cmd[i].a==1))
{
printf(""%s"是内部命令,输入正确 ",cmd[i].abc);
printf("该命令的作用是:%s ",cmd[i].abc1);
break;
}
else if((stricmp(str,cmd[i].abc)==0)&&(cmd[i].a==0))
{
printf(""%s"是外部命令,输入正确 ",cmd[i].abc);
printf("该命令的作用是:%s ",cmd[i].abc1);
break;
}
else if((stricmp(str,cmd[i].abc)!=0)&&(i==n))
{
printf("'%s'不是内部或外部命令,也不是可运行的程序或批处理文件 ",str);
}
}
printf(" ");
}
}

 

 

原文地址:https://www.cnblogs.com/wangjunjie123/p/5318911.html