#include<stdio.h> #define n 11 typedef struct node{ char name[20]; char use[100]; char pro[20]; }DOS; void Input(DOS dos[]) { strcpy(dos[0].name,"DIR"); strcpy(dos[0].use,"显示一个目录中的文件和目录。"); strcpy(dos[0].pro,"内部命令"); strcpy(dos[1].name,"ED"); strcpy(dos[1].use,"显示当前目录的名称或将其修改。"); strcpy(dos[1].pro,"内部命令"); strcpy(dos[2].name,"MD"); strcpy(dos[2].use,"创建一个目录。"); strcpy(dos[2].pro,"内部命令"); strcpy(dos[3].name,"RD"); strcpy(dos[3].use,"删除目录。"); strcpy(dos[3].pro,"内部命令"); strcpy(dos[4].name,"CLS"); strcpy(dos[4].use,"清除屏幕。"); strcpy(dos[4].pro,"内部命令"); strcpy(dos[5].name,"DATE"); strcpy(dos[5].use,"显示或设置日期。"); strcpy(dos[5].pro,"内部命令"); strcpy(dos[6].name,"TIME"); strcpy(dos[6].use,"内部命令显示或设置系统时间。"); strcpy(dos[6].pro,"内部命令"); strcpy(dos[7].name,"REN"); strcpy(dos[7].use,"重新命名文件。"); strcpy(dos[7].pro,"内部命令"); strcpy(dos[8].name,"COPY"); strcpy(dos[8].use,"将至少一个文件复制到另一个位置。"); strcpy(dos[8].pro,"内部命令"); strcpy(dos[9].name,"HELP"); strcpy(dos[9].use,"提供Windows命令的帮助信息。"); strcpy(dos[9].pro,"外部命令"); strcpy(dos[10].name,"QUIT"); strcpy(dos[10].use,"退出命令解释程序。"); strcpy(dos[10].pro,"外部命令"); } //退出系统 void Exit(int a) { if(a==0) Exit(0); } void Choose(char *str[],DOS dos[]) { int i,j; while(1) { printf("C:\\Documents and Settings\\hskd>"); gets(str); strupr(str); //小写转换成大写 for(j=0;j<n;j++) { if(strcmp(str,dos[9].name)==0) { printf("有关某个命令的详细信息,请输入 HELP 命令名\n"); for(i=0;i<n;i++) printf("%s\t%s\n",dos[i].name,dos[i].use); printf("\n有关工具的详细信息,请参阅联机帮助中的命令行参考。\n\n"); break; } else if(strcmp(str,dos[10].name)==0) { Exit(0); break; } else if(strcmp(str,dos[j].name)==0&&strcmp(str,dos[9].name)!=0&&strcmp(str,dos[10].name)!=0) { printf("'%s'\t%s输入正确!\n该命令的作用是:%s\n\n",dos[j].name,dos[j].pro,dos[j].use); break; } else { strlwr(str); //大写转换成小写 printf("'%s' 不是内部或外部命令,也不是可运行的程序\n或批处理文件\n\n",str); break; } } } } main() { DOS dos[n]; char *str[11]; printf("Microsoft Window XP [版本 5.1.2600]\n"); printf("<C> 版权所有 1985-2001 Microsoft Corp.\n\n"); Input(dos); Choose(str,dos); }