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


    一、目的和要求

    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. 命令解释程序的原理:

    命令解释程序的主要功能是:

    1)        接受和执行一条用户从键盘输入的命令,它通常保存一张命令名字(动词)表,其中记录着所有操作命令及其处理程序的入口地址或有关信息。

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<string.h>
     4 
     5 #define MAXLINE 1000
     6 #define N 100
     7 #define Head1 "Microsoft Windows XP [版本 5.1.2600]"
     8 #define Head2 "<C> 版权所有 1985-2001 Microsoft Corp."
     9 #define Head3 "C:\Documents and Settings\Administrator>"
    10 
    11 
    12 void FakeTopTitle()
    13 {    
    14     printf(Head1"
    ");
    15     printf(Head2"
    ");
    16     printf("
    ");
    17     //printf(Head3);
    18 }
    19 
    20 /*
    21 void ReadFromDocument()
    22 {
    23     FILE *fp;
    24     char arr[MAXLINE+1];
    25     printf("
    ");
    26     if ((fp = fopen ("CommandLine.txt", "r")) == NULL)
    27     {
    28          perror ("File open error!
    ");
    29          exit (1);
    30     }
    31     while ((fgets (arr, MAXLINE, fp)) != NULL)
    32     {
    33         fputs (arr, stderr);
    34     }
    35     printf("
    
    ");
    36     printf(Head3);
    37 }    
    38 */
    39 /*
    40 void Test()
    41 {
    42     char s[200][200] = {0};
    43     int i=0;
    44     FILE *fp;
    45     fp = fopen("CommandLine.txt","r");
    46     printf("
    ");
    47     for(i=0;i<200;i++)
    48     {
    49         fscanf(fp,"%s",s[i]);
    50         printf("%s
    ",s[i]);
    51     }
    52 }
    53 */
    54 
    55 int main()
    56 {
    57     int i;
    58     char a[100][100]={"assoc","attrib","break","bootcfg","cacls","call","cd","chcp","chdir",
    59                     "chkdsk","chkntfs","cls","cmd","color","comp","compact","convert",
    60                     "copy","date","del","dir","diskcomp","diskcopy","diskpart","doskey",
    61                     "driverquery","echo","endlocal","erase","eventquery","fc",
    62                     "find","for","format","fsutil","ftype","goto","gpresult","help","if",
    63                     "label","md","mkdir","mode","more","move","openfiles","pagefileconfig",
    64                     "path","pause","popd","print","prompt","pushd","rd","recover","rem",
    65                     "ren","rename","replace","rmdir","set","setlocal","sc","schtasks",
    66                     "shift","shutdown","sort","start","subst","systeminfo","tasklist",
    67                     "taskkill","time","title","tree","type","ver","verify","vol","xcopy",
    68                     "wmic"};
    69     char b[100];
    70     FakeTopTitle();
    71 loop1:printf(Head3);
    72       gets(b);
    73     for(i=0;i<N;i++)
    74     {
    75             if(strcmp(a[i],b)==0)
    76             {
    77                 system(b);
    78                 printf("
    ");
    79                 printf(Head3);
    80                 getchar();
    81             }
    82             else
    83             {
    84                 break;
    85             }
    86             if(strcmp(b,"exit")==0)
    87             {
    88                 exit(0);
    89                 getchar();
    90             }
    91     }
    92     system(b);
    93     goto loop1;
    94     getchar();
    95     return 0;
    96 }
  • 相关阅读:
    Linq增删查改
    AspNetPager 分页显示
    简单C#数据库操作类
    SQL重复记录处理(查找,过滤,删除)
    Asp.Net配置Web.config连接数据库SqlServer
    转:Asp.Net网站项目发布到IIS后验证码不能显示的问题解决
    将一行含有日期范围的数据按照单日日期拆分
    asp.net过滤HTML标签的几个函数
    循环批量更新的的存储过程(属于转载)
    CheckBox的CheckedChanged事件获取所在GridView中的Cell值
  • 原文地址:https://www.cnblogs.com/LeoSunhailin/p/5315710.html
Copyright © 2020-2023  润新知