实验一 命令解释程序的编写(两周内)
一、目的和要求
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.PC微机
2.Windows 操作系统
3.C/C++程序开发集成环境
四、实验核心算法及运用文档
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 char or[19][20]={"dir","cd","md","rd","cls","date","time","ren","copy","javac","java","erase","chkntfs","assoc","at","attrib","call","help","quit"}; 5 char order[10]; 6 void cmd(int i); 7 void main() 8 { 9 int i; 10 printf("Microsoft Windows [版本 6.1.7601]\n"); 11 printf("版权所有 <c> 2009 Microsoft Corporation。版权所有权利。\n\n"); 12 while(1) 13 { 14 printf("C:\\Users\\USER>"); 15 gets(order); 16 if(strcmp(order,"\n")==1) 17 { 18 for(i=0;i<19;i++){ 19 if(stricmp(order,or[i])==0) 20 break; 21 } 22 if(i==19) 23 printf("\"%s\"不是内部或外部命令,也不是可运行的程序或批处理文件。\n\n",order); 24 else if(i==18) 25 break; 26 else if(i==4) 27 system("cls"); 28 else{ 29 cmd(i); 30 //system(order); 31 printf("\n"); 32 } 33 } 34 } 35 } 36 37 38 void cmd(int i){ 39 FILE *fp; 40 int j; 41 int os[19][30]; 42 fp=fopen("order.txt","r+"); 43 for(j=0;j<19;j++) 44 fscanf(fp,"%s",os[j]); 45 fclose(fp); 46 if(i>=0&&i<=16) 47 printf("\"%s\"内部命令输入正确。\n",order); 48 else 49 printf("\"%s\"外部命令输入正确。\n",order); 50 if(i==17){ 51 for(j=0;j<19;j++){ 52 printf("%s\t",or[j]); 53 if(j>=0&&j<=16) 54 printf("内部命令 "); 55 else 56 printf("外部命令 "); 57 printf("%s\n",os[j]); 58 } 59 60 } 61 else if(i==4){ 62 system(order); 63 } 64 else 65 printf("该命令的作用是:%s",os[i]); 66 printf("\n"); 67 }
五、运行结果
六、实验总结
这次实验可以说是一次很简单的实验,有很多运用到的代码都是以前做大作业的时候写过的了。但是还是存在一些问题,比如这次实验的拓展题就让我有些不知道怎么下手,因为cmd命令解释,如果用所以说system(order);这句代码的话就可以照样的输出本机cmd命令解释的,如果不用的话,暂时还没有想出怎么去写这个代码。