实验一DOS报告
實(shí)驗(yàn)一、DOS命令解釋程序的編寫(xiě)實(shí)驗(yàn)
13物聯(lián)網(wǎng)??李名貴 ?201306104123
一、??????? 實(shí)驗(yàn)?zāi)康?/strong>
(1)認(rèn)識(shí)DOS;
(2)掌握命令解釋程序的原理;
(3)掌握簡(jiǎn)單的DOS調(diào)用方法;
(4)掌握C語(yǔ)言編程初步。
?
二、??????? 實(shí)驗(yàn)內(nèi)容和要求
?
編寫(xiě)類(lèi)似于DOS,UNIX的命令行解釋程序
(1)自行定義系統(tǒng)提示符
(2)自定義命令集(8-10個(gè))
(3)用戶輸入HELP以查找命令的幫助
(4)列出命令的功能,區(qū)分內(nèi)部還是外部命令
(5)用戶輸入QUIT退出
(6)內(nèi)部命令有dir,?cd,?md,rd,?cls,?date,?time,?ren,?copy等。
根據(jù)要求,完成設(shè)計(jì)、編碼、測(cè)試工作。
?
?
三、??????? 實(shí)驗(yàn)方法、步驟及結(jié)果測(cè)試
?
?1.???源程序名:shiyan1.c
可執(zhí)行程序名:shiyan1.exe
?
2.????? 原理分析及流程圖
?
原理分析:先將命令符用二維數(shù)組存儲(chǔ)起來(lái)等待用戶輸入命令進(jìn)行匹配,然后將用戶輸入的命令用另一數(shù)組存起來(lái),然后將該命令與已有的命令逐一進(jìn)行比較,對(duì)比相同則輸出類(lèi)型和作用,若對(duì)比后都不相同則提醒用戶此命令不存在。
?
?
?
?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("請(qǐng)輸入提示符:>"); gets(str); for(i=0;i<20;i++){ { if(strcmp(str,cmd[0])==0) { printf("類(lèi)型:內(nèi)部命令\n"); printf("作用:查看當(dāng)前的目錄\n"); printf("\n"); break; } else if(strcmp(str,cmd[1])==0) { printf("類(lèi)型:內(nèi)部命令\n"); printf("作用:顯示當(dāng)前目錄的名稱\n"); printf("\n"); break; } else if(strcmp(str,cmd[2])==0) { printf("類(lèi)型:內(nèi)部命令\n"); printf("作用:創(chuàng)建一個(gè)新目錄\n"); printf("\n"); break; } else if(strcmp(str,cmd[3])==0) { printf("類(lèi)型:內(nèi)部命令\n"); printf("作用:刪除該目錄\n"); printf("\n"); break; } else if(strcmp(str,cmd[4])==0) { printf("類(lèi)型:內(nèi)部命令\n"); printf("作用:清屏\n"); printf("\n"); break; } else if(strcmp(str,cmd[5])==0) { printf("類(lèi)型:內(nèi)部命令\n"); printf("作用:顯示或設(shè)置日期\n"); printf("\n"); break; } else if(strcmp(str,cmd[6])==0) { printf("類(lèi)型:內(nèi)部命令\n"); printf("作用:顯示或設(shè)置系統(tǒng)時(shí)間\n"); printf("\n"); break; } else if(strcmp(str,cmd[7])==0) { printf("類(lèi)型:內(nèi)部命令\n"); printf("作用:重命名文件\n"); printf("\n"); break; } else if(strcmp(str,cmd[8])==0) { printf("類(lèi)型:內(nèi)部命令\n"); printf("作用:將至少一個(gè)文件復(fù)制到另一個(gè)位置\n"); printf("\n"); break; } else if(strcmp(str,cmd[9])==0) { return 0;} else if(strcmp(str,cmd[10])==0) { printf("類(lèi)型:外部命令\n"); printf("dir\t內(nèi)部命令 顯示一個(gè)目錄中的文件和子目錄。\n"); printf("cd\t內(nèi)部命令 顯示當(dāng)前目錄的名稱或?qū)⑵涓摹n"); printf("md\t內(nèi)部命令 創(chuàng)建一個(gè)目錄。\n"); printf("rd\t內(nèi)部命令 刪除目錄。\n"); printf("cls\t內(nèi)部命令 清除屏幕。\n"); printf("date\t內(nèi)部命令 顯示或設(shè)置日期。\n"); printf("time\t內(nèi)部命令 內(nèi)部命令顯示或設(shè)置系統(tǒng)時(shí)間。\n"); printf("ren\t內(nèi)部命令 重新命名文件。\n"); printf("cope\t內(nèi)部命令 將至少一個(gè)文件復(fù)制到另一個(gè)位置。\n"); printf("help\t外部命令 提供Windows命令的幫助信息。\n"); printf("quit\t外部命令 退出命令解釋程序\n"); printf("\n"); break; }else if(strcmp(str,cmd[i])!=0){ printf("此命令不存在,請(qǐng)重新輸入!\n"); printf("\n"); break;} } } } }?
Char*cmd[20]={"dir","cd","md","rd","cls","date","time","ren","copy","quit","help"};?? char str[10];
//字符指針數(shù)組cmd用于存儲(chǔ)這十一個(gè)命令符,數(shù)組str存儲(chǔ)用戶輸入的命令符。
printf("請(qǐng)輸入提示符:>");
gets(str);
//用戶輸入的命令符存到數(shù)組中
If(strcmp(str,cmd[0])==0)
// strcmp函數(shù)功能為將兩參數(shù)進(jìn)行對(duì)比,如果對(duì)比完全一致則為0,則進(jìn)行下去
4.????? 運(yùn)行結(jié)果及分析
?
輸入其中的一個(gè)命令
?
?
?
輸入help顯示所有命令
?
輸入不存在的命令
?
輸入quit命令
?
?
?
?
?
四、??????? 實(shí)驗(yàn)總結(jié)
?
本次實(shí)驗(yàn)不是太難,用到的都是當(dāng)初所學(xué)的c語(yǔ)言的知識(shí),if ,else if等語(yǔ)句,還有數(shù)組的使用,strcmp比較函數(shù)的使用。然后就是簡(jiǎn)單的printf輸出語(yǔ)句。
?
?
?
?
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/llmg/p/4859324.html
超強(qiáng)干貨來(lái)襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)
- 上一篇: 编程技巧:使用异或操作符(XOR)交换两
- 下一篇: 用C#创建COM组件全过程