1009實驗一 認識DOS

來源:互聯網
上載者:User

標籤:

實驗一、DOS實驗

物聯網工程  張怡   201306104149

一、 實驗目的

    (1)認識DOS;

    (2)掌握命令解釋程式的原理;

    (3)掌握簡單的DOS調用方法;

    (4)掌握C語言編程初步。

 

二、實驗內容和要求

     編寫類似於DOS,UNIX的命令列解釋程式。

     (1)自行定義系統提示符

      (2)自訂命令集(8-10個)

      (3)使用者輸入HELP以尋找命令的協助

      (4)列出命令的功能,區分內部還是外部命令

      (5)使用者輸入QUIT退出

      (6)內部命令有dir, cd, md,rd, cls, date, time, ren, copy等。

 

三、 實驗方法、步驟及結果測試

 1.   來源程式名:壓縮包檔案(rar或zip)中來源程式名1.c

       可執行程式名:1.exe

2.   原理分析及流程圖

    這個程式主要是while(1)語句和if( )……else( )語句的嵌套使用,此外是數組的使用。將所需實現的命令存入數組cmd[20][20],然後將輸入的字串存入數組str[20],將兩個數組內的字串進行比對,若滿足“strcmp(str,cmd[n])==0”,則輸出數字n對應的命令及其解釋,若不滿足“strcmp(str,cmd[n])==0”,則提示“輸入出錯,請重新輸入:”,直至輸入的字串與數組cmd[20][20]內的字串對應為止,此時輸出n對應的命令。若一直不輸入“quit”,則每次顯示上次輸入的命令對應的語句時,提示“請使用者輸入命令:”。

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

#include<stdio.h>

#include<string.h>

main()

{ 

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

    char str[20];//儲存字串的數組

    printf("歡迎使用DOS命令直譯器!\n\n");

    while(1)

  {  

      printf("\n請使用者輸入命令:");    

      gets(str); //str等於輸入的字串    

      if(strcmp(str,cmd[0])==0) 

    //比較函數,和前面的數組進行比較,相同為0不同為1,為0時輸出

      {

         printf("dir顯示磁碟目錄\n");

      }

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

      {

          printf("cd 進入特定的目錄\n");

      }  

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

      {

         printf("md 建立新的目錄\n");//dos下面習慣叫目錄,win下面習慣叫檔案夾。

      }  

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

      {

         printf("rd 刪除檔案夾\n");

      }

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

      {

          printf("cls 清屏\n");

      } 

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

      {

          printf("date 日期設定\n");

      } 

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

      {

         printf("time 設定(或顯示)系統時期\n");

      }    

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

      {

         printf("ren 檔案改名\n");//ren命令的格式是:ren 源檔案名稱目的檔案名稱

      } 

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

      {

          printf("copy複製\n");

      }

      else if(strcmp(str,cmd[9])==0)  //輸入help,顯示以下內容

      {

         printf("dir (無參數)顯示磁碟目錄\n");    

         printf("cd  進入特定的目錄 \n");   

         printf("md  建立新的目錄\n");

         printf("rd  刪除特定的檔案夾\n");   

         printf("cls 清螢幕命令\n");    

         printf("date設定日期 \n");   

         printf("time設定或顯示系統時期\n");

         printf("ren 檔案改名命令\n");    

         printf("copy檔案複製命令\n");

         printf("quit退出\n");

      } 

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

      {

          printf("quit退出\n");

          return;}

      else  //與數組內字串不同,為1,提示出錯 

      {   

         printf("輸入出錯,請重新輸入:\n");  

      }    

  }

}

4.   運行結果及分析

    運行程式,有如下效果:顯示“歡迎使用DOS命令直譯器!”,並提示“請使用者輸入命令”。此處,列印“請使用者輸入命令”這一句的語句放在while(1)裡面,使其不斷提示。

 

 

    輸入程式的寄存數組內未設定的命令,則提示“輸入出錯,請重新輸入:”。此處用到if( )……else( )語句,如果滿足“str,cmd[n])==0”,則顯示數字n對應的命令及其解釋,否則提示“輸入出錯,請重新輸入:”。

 

 

輸入“help”,則顯示寄存數組內設定的命令及其解釋。

      

 

  輸入寄存數組內設定的命令,則顯示該命令及其解釋。

 

 

  輸入“quit”,則顯示“quit退出”,並按任意鍵可退出程式。

  

 

四、實驗總結

     這是作業系統的第一個實驗,之前並沒有瞭解過DOS命令,因此上網查著了相關資料。DOS的內部命令有dir, cd, md,rd, cls, date, time, ren, copy等,程         序對這些命令進行了簡要的解釋。程式運行後,提示“歡迎使用DOS命令直譯器!”和“請使用者輸入命令”,不瞭解的話可以輸入“help”命令,則顯示DOS命令及相關解釋。

     剛開始做實驗的時候只有模糊的架構概念,知道可以用if(),else if()和else()語句進行編程,但思路很亂,不知具體如何?。通過尋找相關書籍以及上網瀏覽程式碼,發現數組可以很好的解決這個問題。於是用一個數組來儲存所要用到的命令,另外用一個數組來儲存剛輸入的命令(字串),然後和前面的數組進行比較,相同為0不同為1,為0時輸出,為1則提示出錯,要求重新輸入命令。當輸入“quit”命令時,提示“quit退出”,並退出輸入,此時按任意鍵可退出顯示。

 

1009實驗一 認識DOS

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.