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

一、目的和要求

1. 实验目的

(1)掌握命令解释程序的原理;

(2)*掌握简单的DOS调用方法;

(3)掌握C语言编程初步。

2.实验要求

编写类似于DOS,UNIX的命令行解释程序

(1)自行定义系统提示符

(2)自定义命令集(8-10个)

(3)用户输入HELP以查找命令的帮助

(4)列出命令的功能,区分内部还是外部命令

(5)用户输入QUIT退出

(6)内部命令有dir, cd, md, rd, cls, date, time, ren, copy等。

  1 #include<stdio.h> 
  2 #include <stdlib.h> 
  3 # include<string.h> 
  4 main() 
  5 { 
  6     char cmd[20][20]={"dir","cd","md","rd","cls","date","time","ren", "copy","quit","help"}; 
  7     char str[10];  
  8     int i;  
  9     printf("Microsoft Windows XP [版本 5.1.2600]\n");
 10     printf("<c> 版权所有 1985-2001 Microsoft Corp\n\n");
 11     while(1){
 12         printf("C:Documents and Settingshskd>"); 
 13         gets(str); 
 14         strlwr(str);
 15         for(i=0;i<20;i++)
 16         { 
 17             { 
 18                 if(strcmp(str,cmd[0])==0) 
 19                 {
 20                     printf("类型:内部命令\n"); 
 21                     printf("显示一个目录中的文件和子目录。\n"); 
 22                     printf("\n"); 
 23                     printf("\n"); 
 24                     break; 
 25                 }
 26                 else if(strcmp(str,cmd[1])==0) 
 27                 {
 28                     printf("类型:内部命令\n"); 
 29                     printf("显示当前目录的名称或将其更改。\n"); 
 30                     printf("\n"); 
 31                     printf("\n"); 
 32                     break; 
 33                 }
 34                 else if(strcmp(str,cmd[2])==0) 
 35                 {
 36                     printf("类型:内部命令\n"); 
 37                     printf("创建一个新目录···\n"); 
 38                     printf("\n"); 
 39                     printf("\n"); 
 40                     break; 
 41                 }
 42                 else if(strcmp(str,cmd[3])==0) 
 43                 { 
 44                     printf("类型:内部命令\n"); 
 45                     printf("删除该目录....\n"); 
 46                     printf("\n"); 
 47                     printf("\n"); 
 48                     break; 
 49                 }
 50                 else if(strcmp(str,cmd[4])==0) 
 51                 {
 52                 /*printf("类型:内部命令\n"); 
 53                     printf("清屏···\n"); */
 54                     system("cls");
 55                     printf("\n"); 
 56                     printf("\n"); 
 57                     break; 
 58                 } 
 59                 else if(strcmp(str,cmd[5])==0) 
 60                 {
 61                     printf("类型:内部命令\n"); 
 62                     printf("显示或设置日期。\n"); 
 63                     printf("\n"); 
 64                     printf("\n"); 
 65                     break; 
 66                 } 
 67                 else if(strcmp(str,cmd[6])==0)
 68                 {
 69                     printf(" 类型:内部命令\n"); 
 70                     printf("内部命令显示或设置系统时间。\n"); 
 71                     printf("\n"); 
 72                     printf("\n"); 
 73                     break; 
 74                 }
 75                 else if(strcmp(str,cmd[7])==0) 
 76                 {
 77                     printf("类型:内部命令\n"); 
 78                     printf("重命名文件···\n"); 
 79                     printf("\n"); 
 80                     printf("\n"); 
 81                     break; 
 82                 }
 83                 else if(strcmp(str,cmd[8])==0) 
 84                 {
 85                     printf("类型:内部命令\n"); 
 86                     printf("将至少一个文件复制到另一个位置。\n"); 
 87                     printf("\n"); 
 88                     printf("\n"); 
 89                     break; 
 90                 } 
 91                 else if(strcmp(str,cmd[9])==0) 
 92                 { 
 93                     return 0;
 94                 } 
 95                 else if(strcmp(str,cmd[10])==0) 
 96                 {
 97                     //printf("类型:外部命令\n"); 
 98                     printf("dir\t内部命令 显示一个目录中的文件和子目录。\n"); 
 99                     printf("cd\t内部命令 显示当前目录的名称或将其更改。\n"); 
100                     printf("md\t内部命令 创建一个目录。\n"); 
101                     printf("rd\t内部命令 删除目录。.\n"); 
102                     printf("cls\t内部命令 清除屏幕。\n"); 
103                     printf("dte\t内部命令 显示或设置日期。\n"); 
104                     printf("time\t内部命令 内部命令显示或设置系统时间。\n"); 
105                     printf("ren\t内部命令 重新命名文件。\n"); 
106                     printf("copy\t内部命令 将至少一个文件复制到另一个位置。\n"); 
107                     printf("help\t外部命令 提供Windows命令的帮助信息。\n"); 
108                     printf("quit\t外部命令 退出命令解释程序\n");
109                     printf("\n"); 
110                     printf("\n"); 
111                     break;
112                 }
113                 else if(strcmp(str,cmd[i])!=0){ 
114                     printf("此命令不是内部或外部命令,也不是可运行的程序或批处理文件\n"); 
115                     printf("\n"); 
116                     break;
117                 }
118             }
119             }
120             }
121  }

四、实验总结

本次程序中仍有许多不明白的地方,只能做个简单的界面,对DOS命令更加了解

posted on 2016-03-25 13:17  nicole01  阅读(1596)  评论(0编辑  收藏  举报