一、 實驗目的
(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. 源程式名:壓縮封包件(rar或zip)中源程式名 MiniOS.c
可執行程式名:MiniOS.exe
- 2. 原理分析及流程圖
采用數組的存儲結構。
主要算法:
顯示程式提示資訊;
While(1)
{ 顯示提示符;
接收鍵盤的字元串;
判斷是否quit程式退出指令,是則退出;
判斷是否内部指令,并給出相應的資訊,否則給出錯誤資訊;
}
顯示退出程式資訊
- 3. 主要程式段及其解釋:
for( i=0;i<19;i++)
if(strcmp(ch1,j[i])==0) /*比較輸入的字元串與數組的關鍵字是否相等*/
{
switch(i)
{
case 0:
printf("dir 顯示一個目錄中的檔案和子目錄。\n");
break;
case 1:
printf("cd 顯示目前目錄的名稱或将其更改。\n");
case 2:
printf("md 建立目錄。\n");
case 3:
printf("rd 删除目錄。\n");
case 4:
printf("cls 清除螢幕。\n");
case 5:
printf("date 顯示或設定日期。\n");
case 6:
printf("time 顯示或設定系統時間。\n");
break;
case 7:
printf("ren 重命名檔案。\n");
case 8:
printf("copy 将至少一個檔案複制到另一個位置。\n");
break;
case 9:
printf("javac 将某一個java程式進行編譯。\n");
case 10:
printf("java 運作某一個已編譯的java檔案。\n");
break;
case 11:
printf("erase 删除至少一個檔案。\n");
case 12:
printf("chkntfs 顯示或修改啟動時間磁盤檢查。\n");
case 13:
printf("assoc 顯示或修改檔案擴充名關聯。\n");
case 14:
printf("at 計劃在計算機上運作的指令和程式。\n");
case 15:
printf("attrib 顯示或更改檔案屬性。\n");
case 16:
printf("call 從另一個批處理程式調用這一個。\n");
case 17:
printf("dir\tcd\tmd\trd\tcls\ndate\ttime\tren\tcopy\tjavac\njava\terase\tchkntfs\tassoc\tat\nattrib\tcall\nEnter \" quit\" to quit this program!!\n");
case 18:
printf("Thanks for using it,bye!!\n");
break; }
return 1;
}
printf("No this one!!\nNot a internal commal.\n");
return 0;
根據輸入的字元串,輸出相應的資訊。
- 4. 運作結果及分析

四、 實驗總結
這次實驗用了switch case語句,優點是便于自己編寫簡單點,而缺點是沒有讀取檔案友善。