操作系统——MiniDos

时间:2021-07-01 12:29:38
 #include <stdio.h>
#include <string.h>
#include <windows.h>
char prog[],token[],ch,sa[];
char *mean[]={"主要用来显示一个目录下的文件和子目录。", "改变或显示当前目录", "创建一个子目录 ", " 删除空子目录 ", "清除显示器屏幕上的内容,使DOS提示符到屏幕左上角 "};
int syn,p,m,n,sum;
char *rwtab[]={"dir","cd","md","rd","cls","help","exit"};
scaner(); void main()
{
int i=;
printf("Microsoft Windows [版本 6.3.9600]\n");
printf("<c> 2013 Microsoft Corporation。保留所有权利\n");
do{
scaner();
switch(syn)
{case :{
if(n==)
{
for(i=;i<;i++){
strcpy(sa,token);
system(sa);
printf("%-5s%s\n",rwtab[i],mean[i]); }
}
else if(n==) break;
else{
strcpy(sa,token);
system(sa);
printf("'%s'是内部命令,作用是:%s\n\n",token,mean[n]);
}
}
break; default: printf("'%s'不是内部命令。\n",token);
break;
}
}while(strcmp(token,"exit"));
} scaner()
{
sum=;
p=;
for(m=;m<;m++)
{
prog[m]=NULL;
token[m]=NULL;
}
printf("\n\nC:\Documents and Settings\hskd>");
do{
scanf("%c",&ch);
prog[p++]=ch;
}while(ch!='\n');
for (p=;p<;p++) {
prog[p] = tolower(prog[p]); //大小写转换
}
p=;
for(m=;m<;m++)
token[m++]=NULL;
ch=prog[p++];
m=;
while((ch==' ')||(ch=='\n'))
ch=prog[p++];
if(((ch<='z')&&(ch>='a'))||((ch<='Z')&&(ch>='A')))
{ while(((ch<='z')&&(ch>='a'))||((ch<='Z')&&(ch>='A'))||((ch>='')&&(ch<='')))
{token[m++]=ch;
ch=prog[p++];
}
p--;
syn=;
for(n=;n<;n++)
if(strcmp(token,rwtab[n])==)
{
syn=;
return n;
}
}
return ;
}