#include<stdio.h> #include<conio.h> #include<string.h> #include<stdlib.h> #define N 100 struct miniOS { int a;//记录是内部命令还是外部命令 char command[10];//记录命令 char YON_parameter[20];//记录该命令是否需要参数 char commandstate[100];//陈述命令的功能 }; struct miniOS os[N]; void judge(char str[],int n)//判断命令的对错 { int i; for(i=0;i<=n;i++) { if(stricmp(str,"help")==0) { for(i=0;i<=n;i++) { printf("%s %-34s%-20s ",os[i].command,os[i].commandstate,os[i].YON_parameter); } break; } if((stricmp(str,os[i].command)==0)&&(os[i].a==1)) { printf(""%s" "%s" 是内部命令,输入正确! ",os[i].command,os[i].YON_parameter); printf("该命令的作用是:%s ",os[i].commandstate); break; } else if((stricmp(str,os[i].command)==0)&&(os[i].a==0)) { printf(""%s" "%s" 是外部命令,输入正确! ",os[i].command,os[i].YON_parameter); printf("该命令的作用是:%s ",os[i].commandstate); break; } else if((stricmp(str,os[i].command)!=0)&&(i==n)) { printf("'%s'不是内部或外部命令,也不是可运行的程序 或批处理文件 ",str); } } } void command_function(char str[],int n)//命令功能 { int i; for(i=0;i<=n;i++) { if(stricmp(str,"cls")==0) { system("cls");//清屏 } } } int file()//文件的读取 { int i,n; FILE *fp; fp=fopen("cmd.txt","r+"); for(i=0;!feof(fp);i++) { fscanf(fp,"%s%s%s%d",os[i].command,os[i].commandstate,os[i].YON_parameter,&os[i].a); n=i; } fclose(fp); return n; } main() { int n; char str[N]; printf("Microsoft Windows [版本 6.1.7601 ] "); printf("版本所有 <c> 2009 Microsoft Corporation。保留所有权利 "); n=file(); while(1){ printf("C:\Users\Administrator.USER-20151120JI>"); gets(str); judge(str,n); command_function(str,n); printf(" "); } }