实验一DOS报告
實驗一、DOS命令解釋程序的編寫實驗
13物聯網??李名貴 ?201306104123
一、??????? 實驗目的
(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.???源程序名:shiyan1.c
可執行程序名:shiyan1.exe
?
2.????? 原理分析及流程圖
?
原理分析:先將命令符用二維數組存儲起來等待用戶輸入命令進行匹配,然后將用戶輸入的命令用另一數組存起來,然后將該命令與已有的命令逐一進行比較,對比相同則輸出類型和作用,若對比后都不相同則提醒用戶此命令不存在。
?
?
?
?3.????? 主要程序段及其解釋:
?
#include<stdio.h> #include<stdlib.h> #include<string.h> main(){ char *cmd[20]={"dir","cd","md","rd","cls","date","time","ren","copy","quit","help"}; char str[10]; int i; while(1){ printf("請輸入提示符:>"); gets(str); for(i=0;i<20;i++){ { if(strcmp(str,cmd[0])==0) { printf("類型:內部命令\n"); printf("作用:查看當前的目錄\n"); printf("\n"); break; } else if(strcmp(str,cmd[1])==0) { printf("類型:內部命令\n"); printf("作用:顯示當前目錄的名稱\n"); printf("\n"); break; } else if(strcmp(str,cmd[2])==0) { printf("類型:內部命令\n"); printf("作用:創建一個新目錄\n"); printf("\n"); break; } else if(strcmp(str,cmd[3])==0) { printf("類型:內部命令\n"); printf("作用:刪除該目錄\n"); printf("\n"); break; } else if(strcmp(str,cmd[4])==0) { printf("類型:內部命令\n"); printf("作用:清屏\n"); printf("\n"); break; } else if(strcmp(str,cmd[5])==0) { printf("類型:內部命令\n"); printf("作用:顯示或設置日期\n"); printf("\n"); break; } else if(strcmp(str,cmd[6])==0) { printf("類型:內部命令\n"); printf("作用:顯示或設置系統時間\n"); printf("\n"); break; } else if(strcmp(str,cmd[7])==0) { printf("類型:內部命令\n"); printf("作用:重命名文件\n"); printf("\n"); break; } else if(strcmp(str,cmd[8])==0) { printf("類型:內部命令\n"); printf("作用:將至少一個文件復制到另一個位置\n"); printf("\n"); break; } else if(strcmp(str,cmd[9])==0) { return 0;} else if(strcmp(str,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外部命令 提供Windows命令的幫助信息。\n"); printf("quit\t外部命令 退出命令解釋程序\n"); printf("\n"); break; }else if(strcmp(str,cmd[i])!=0){ printf("此命令不存在,請重新輸入!\n"); printf("\n"); break;} } } } }?
Char*cmd[20]={"dir","cd","md","rd","cls","date","time","ren","copy","quit","help"};?? char str[10];
//字符指針數組cmd用于存儲這十一個命令符,數組str存儲用戶輸入的命令符。
printf("請輸入提示符:>");
gets(str);
//用戶輸入的命令符存到數組中
If(strcmp(str,cmd[0])==0)
// strcmp函數功能為將兩參數進行對比,如果對比完全一致則為0,則進行下去
4.????? 運行結果及分析
?
輸入其中的一個命令
?
?
?
輸入help顯示所有命令
?
輸入不存在的命令
?
輸入quit命令
?
?
?
?
?
四、??????? 實驗總結
?
本次實驗不是太難,用到的都是當初所學的c語言的知識,if ,else if等語句,還有數組的使用,strcmp比較函數的使用。然后就是簡單的printf輸出語句。
?
?
?
?
?
?
?
?
?
轉載于:https://www.cnblogs.com/llmg/p/4859324.html
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
- 上一篇: 编程技巧:使用异或操作符(XOR)交换两
- 下一篇: AppDelegate 处理iOS应用的