现在网站建设需要多少钱英文网站建
选择一种高级语言如C/C++等,编写一类似于DOS、UNIX中的命令行解释程序。
1)设计系统命名行提示符;
2)自定义命令集(8-10个);
3)用户输入help命令以查找命令的帮助;
4)列出命令的功能,区分内部命令与外部命令;
5)用户输入quit退出。
(1)设计思想:
命令解释器流程图
 
(2)功能函数设计
 void Init(struct Cmd cm[Max]);//命令初始化
 void process(struct Cmd cm[Max]);//命令的实现
 void display(struct Cmd cm[Max]);//显示所有命令
 (3)具体实现
 1、创建结构体cmd,包含命令、命令解释、命令标识(1:内部命令2:外部命令)
 1.struct Cmd{
 2. char cmd[30];//命令
 3. char function[500];//命令作用
 4. int post;//标志
 5.};
2、命令初始化,创建文件cmd.txt,在文件中输入命令、命令解释、命令标识,将文件命令存入结构体中。
 2.1调用fopen函数打开cmd.txt文件,a+:打开或新建一个文本文件,可以读,但只允许在文件末尾追写 。
 2.2用循环对文件内容的读取,并将读取的内容存入Cmd中。
- while(!feof(fp)&&fgetc(fp)!=EOF){
 -  
fseek(fp,-1l,SEEK_CUR); -  
//对文件内容的读取,并将读取的内容存入链表Cmd中 -  
fscanf(fp,"%s%s%d",&cm[count].cmd,&cm[count].function,&cm[count].post); -  
count++; - }
 
3、显示命令,用for循环将结构体输出,当标识为1时,输出内部命令,标识为2时,输出外部命令。
 4、命令的实现,创建数组key,和标识flag,模拟操作系统。
 4.1进行while循环直到key为quit时,输出“程序结束!”,当key为help时,调用命令显示函数,将标志置为1,表示输入的命令能够在结构体中找到。
- if(strcmp(key,“help”)==0){
 -  
printf("命令详情,help\n"); -  
display(cm); -  
flag=1; -  
} 
4.2否则当key和结构体中命令匹配时,判断命令标识,当命令标识为1时,表示内部命令输入正确,命令标识为0时,表示外部命令输入正确。用系统调用cmd去处理命令,将标志置为1。
 1.for(i=0;i<count;i++){
 2. if(strcmp(key,cm[i].cmd)0){
 3. if(cm[i].post1)
 4. printf(“%s 内部命令输入正确\n “,strupr(cm[i].cmd));
 5.
 6. else
 7. printf(”%s 外部命令输入正确\n”,strupr(cm[i].cmd));
 8. }
 9. system(key);//系统调用cmd去处理命令
 10. flag=1;
 11. break;
 12. }
4.3若标志为0,即输出的字符串在结构体中找不到,且key不为quit,则报错。输出该命令不是内部或外部命令,也不是可运行的程序。
 (4)结果演示:
 (1)当输入命令“help”时,程序如下:
 
(2)当输入命令“dir”时,程序如下:
 
(3)当输入命令“cls”时,程序如下:
 
(4)当输入命令“cls”或者当输入命令“calc”时,程序如下:
 
