操作系统——MiniDos

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <windows.h>
 4 char prog[80],token[8],ch,sa[8];
 5 char *mean[6]={"主要用来显示一个目录下的文件和子目录。", "改变或显示当前目录", "创建一个子目录 ", " 删除空子目录 ", "清除显示器屏幕上的内容,使DOS提示符到屏幕左上角 "};
 6 int syn,p,m,n,sum;
 7 char *rwtab[7]={"dir","cd","md","rd","cls","help","exit"};
 8 scaner();
 9 
10 
11 void main()
12 {
13     int i=0;
14 printf("Microsoft Windows [版本 6.3.9600]
");
15 printf("<c> 2013 Microsoft Corporation。保留所有权利
");    
16 do{
17 scaner();
18 switch(syn)
19 {case 11:{
20     if(n==5)
21     {
22         for(i=0;i<5;i++){
23             strcpy(sa,token);
24         system(sa);
25         printf("%-5s%s
",rwtab[i],mean[i]);
26     
27         }
28     }
29     else if(n==6) break;
30     else{
31         strcpy(sa,token);
32         system(sa);
33     printf("'%s'是内部命令,作用是:%s

",token,mean[n]);
34 }
35 }
36 break;
37         
38 default: printf("'%s'不是内部命令。
",token);
39          break;
40 }
41 }while(strcmp(token,"exit"));
42 }
43 
44 
45 scaner()
46 { 
47     sum=0;
48     p=0;
49 for(m=0;m<8;m++)
50 {
51     prog[m]=NULL;
52     token[m]=NULL;
53 }
54 printf("

C:Documents and Settingshskd>");
55 do{
56 scanf("%c",&ch);
57 prog[p++]=ch;
58 }while(ch!='
');
59 for (p=0;p<4;p++) { 
60 prog[p] = tolower(prog[p]); //大小写转换
61 }
62 p=0;
63 for(m=0;m<8;m++)
64 token[m++]=NULL;
65 ch=prog[p++];
66 m=0;
67 while((ch==' ')||(ch=='
'))
68 ch=prog[p++];
69 if(((ch<='z')&&(ch>='a'))||((ch<='Z')&&(ch>='A')))
70 { while(((ch<='z')&&(ch>='a'))||((ch<='Z')&&(ch>='A'))||((ch>='0')&&(ch<='9')))
71 {token[m++]=ch;
72 ch=prog[p++];
73 }
74 p--;
75 syn=10;
76 for(n=0;n<7;n++)
77 if(strcmp(token,rwtab[n])==0)
78 { 
79     syn=11;
80      return n;
81 }
82 }
83 return 0;
84 }
原文地址:https://www.cnblogs.com/xinmingwang/p/5316301.html