实验一、命令解释程序的编写
商软2班 刘皓 201406114229
一、 实验目的
(1)掌握命令解释程序的原理;
(2)*掌握简单的DOS调用方法;
(3)掌握C语言编程初步。
二、 实验内容和要求
编写类似于DOS,UNIX的命令行解释程序
(1)自行定义系统提示符
(2)自定义命令集(8-10个)
(3)用户输入HELP以查找命令的帮助
(4)列出命令的功能,区分内部还是外部命令
(5)用户输入QUIT退出
(6)内部命令有dir, cd, md, rd, cls, date, time, ren, copy等。
三、 实验方法、步骤及结果测试
1 #include <fstream> 2 #include <iostream> 3 #include <stdio.h> 4 5 struct cmd 6 { 7 char name[40]; 8 char effect[100]; 9 }; 10 11 int main(void) 12 { 13 std::ifstream OpenFile("test.txt"); 14 15 if (!OpenFile) 16 { 17 std::cout << "Can't not open this file. "; 18 exit(0); 19 } 20 21 const int N = 100; 22 23 cmd c[N]; 24 int n = 0; 25 while (!OpenFile.eof()) 26 { 27 OpenFile >> c[n].name; 28 OpenFile >> c[n].effect; 29 30 n++; 31 } 32 OpenFile.close(); 33 34 char ch[20]; 35 int x; 36 std::cout << "Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。"; 37 std::cout << " C:\Users\Administrator>"; 38 gets(ch); 39 while (1) 40 { 41 x = 0; 42 for (int i = 0; i < 20; i++) 43 { 44 if (ch[i] >= 'a' && ch[i] <= 'z') 45 ch[i] -= 32; 46 } 47 for (i = 0; i < n; i++) 48 if (strcmp(ch, c[i].name) == 0) 49 { 50 std::cout << c[i].name << c[i].effect << std::endl; 51 x = 1; 52 break; 53 } 54 55 if (strcmp(ch, "HELP") == 0) 56 { 57 for (int i = 0; i < n; i++) 58 std::cout << c[i].name << " " << c[i].effect << std::endl; 59 x = 1; 60 } 61 62 if (strcmp(ch, "EXIT") == 0) 63 { 64 std::cout << "程序即将退出! "; 65 exit(0); 66 } 67 68 if (x == 0) 69 std::cout << "'" <<ch << "'" <<"不是内部或外部命令,也不是可运行的程序或批处理文件。 "; 70 71 std::cout << " C:\Users\Administrator>"; 72 gets(ch); 73 } 74 75 return 0; 76 }