天天看點

實驗一 指令解釋程式

                   實驗一、指令解釋程式的編寫

一、 實驗目的

(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.      源程式名:壓縮封包件中源程式名 1.cpp

                 可執行程式名: 1.exe

        2.      原理分析及流程圖

           在程式裡建一個指令結構體,裡面包含了指令名、指令功能、判斷内部或外部指令的編号、參數,如:

                  struct Cmd{

                                      char cmd[30];  //指令名

                                      char function[500];  //指令功能

                                      int post;  //是否是内部指令,是則為1否則為0

                                      char parameter[1000];  //參數

                   };

                  最後通過使用者輸入的字元串,比較是否與二維數組裡面的指令名一樣,相同則輸出該指令的所有資訊,

                  若不同則輸出該指令不是内部指令或外部指令。如果使用者輸入quit,則程式結束。 

        3.      主要程式段及其解釋:

#include<stdio.h>

#include<string.h>

int main(){

    //建立數組

    char cmd[30][30]={"dir","cd","md","rd","cls","date","time","ren","copy","quit","help"};

    char ben[10];

    int i;

          printf("Microsoft Windows [版本 6.1.7601\n");

    printf("(c) 2009 Microsoft Corporation。保留所有權利。\n");

    //循環

    while(1){

        printf("Please input 提示符:>");

        gets(ben);

        for(i=0;i<20;i++){

            if(strcmp(ben,cmd[0])==0){

                printf("類型:内部指令\n");

                printf("檢視目前目錄。。\n");

                printf("\n");

                break;

            }

            else if(strcmp(ben,cmd[1])==0){

                printf("檢視目前目錄的名稱。。\n");

                break;

            else if(strcmp(ben,cmd[2])==0){

                printf("建立一個新目錄。。\n");

            else if(strcmp(ben,cmd[3])==0){

                printf("删除這個目錄。。\n");

            else if(strcmp(ben,cmd[4])==0){

                printf("類型:内部指令\n");

                printf("清除螢幕。。\n");

            else if(strcmp(ben,cmd[5])==0){

                printf("顯示或者設定新日期。。\n");

            else if(strcmp(ben,cmd[6])==0){

                printf("顯示或者設定系統時間。。\n");

            else if(strcmp(ben,cmd[7])==0){

                printf("檔案重命名。。\n");

                printf("\n");

            else if(strcmp(ben,cmd[8])==0){

                printf("将至少一個檔案複制到另一個位置去。。\n");

                break;

            else if(strcmp(ben,cmd[9])==0){

                return 0;

            else if(strcmp(ben,cmd[10])==0){

                printf("類型:外部指令\n");

                printf("dir\t内部指令 顯示一個目錄的檔案和子目錄。\n");

                printf("cd\t内部指令 顯示目前目錄的名稱或将其更改。\n");

                printf("md\t内部指令 建立一個新的目錄。\n");

                printf("rd\t内部指令 删除目錄。\n");

                printf("cls\t内部指令 清除螢幕。\n");

                printf("date\t内部指令 顯示或者設定日期。\n");

                printf("time\t内部指令 内部指令顯示或者設定系統時間。\n");

                printf("ren\t内部指令 重命名。\n");

                printf("cope\t内部指令 複制檔案。\n");

                printf("help\t内部指令 取得幫助。\n");

                printf("quit\t内部指令 退出程式。\n");

                printf("\n");

        }         

        }

}

4、運作結果及分析

實驗一 指令解釋程式
實驗一 指令解釋程式

測試結果與預期結果一樣。

四、實驗總結

   在大一的時候學習過C語言程式設計,可是之後并沒有自己加強鞏固,是以現在好多都已經忘記了。是以做這個實驗的時候遇到了蠻多的問題的,例如不會運用二維數組、還有那個字元串函數也不太懂。是以,深刻的了解到,學完一樣東西之後一定要抽時間去在複習一下。