【正文】
.....................................................6附 錄 .....................................................................................................................................................................7佛山科學(xué)技術(shù)學(xué)院課程設(shè)計(jì)用紙1一、程序概述 完成的任務(wù) 本設(shè)計(jì)要求編寫一個(gè)簡(jiǎn)單的文件訪問(wèn)接口設(shè)計(jì),利用 C 語(yǔ)言,DOS,BIOS 中斷調(diào)用進(jìn)行設(shè)計(jì)。}。文件訪問(wèn)接口所謂訪問(wèn)接口,實(shí)際上即為用戶通過(guò) dos 狀態(tài)下的提示,鍵入相關(guān)命令后,作為訪問(wèn)相關(guān)文件操作的中介,即類似一個(gè)中轉(zhuǎn)站。用戶程序可以通過(guò)這組“特殊”接口來(lái)獲得操作系統(tǒng)內(nèi)核提供的服務(wù),比如用戶可以通過(guò)文件系統(tǒng)相關(guān)的調(diào)用請(qǐng)求系統(tǒng)打開文件、關(guān)閉文件或讀寫文件,可以通過(guò)時(shí)鐘相關(guān)的系統(tǒng)調(diào)用獲得系統(tǒng)時(shí)間或設(shè)置定時(shí)器等。另外,本程序在 dos 下進(jìn)行演示,需要根據(jù)提示來(lái)進(jìn)行輸入,不允許用戶胡亂的輸入,不然有可能程序處理不了,即本程序在某種程度上還不是很穩(wěn)定,安全。剛開始還不知所措,網(wǎng)上的介紹也很模糊,根本很難找到有關(guān) dos 中斷進(jìn)行文件訪問(wèn)接口的相關(guān)設(shè)計(jì)。printf(\n8 To validate the reading contents from file )。return sel。inregs,amp。s Attribute is:%d\n,filename,)。inregs,amp。佛山科學(xué)技術(shù)學(xué)院課程設(shè)計(jì)用紙12=0x3D。//You Can Through CreateFile() To Know The FileCode as test//printf(Successfully open file :%d \n,)。int FileCode。outregs,amp。}else{//printf(\nOpen the file: %s Successfully! Now the file will be close\n,filename)。}}//Input Contents To Existing Filevoid WriteToFile(char filename[80]){union REGS inregs,outregs。=2。//Very Important Here : To Abosrb The Enter KeyCode。\039。for(int i=0。}scanf(%c,amp。) endif(i==CNum1){//getchar()。=FileCode。inregs,amp。i = 1。}*///printf(\n\nthe rest of the contents of file:%s are listed below\n,filename)。//printf(WriteContents= %s i=%d\n,WriteContents,i)。=FP_OFF(WriteContents)。segregs)。//printf(=%d\n,)。=FP_OFF(filename)。if(2==result){printf(\nCan not read contents from file: %s ! The file may not exist\n,filename)。=1024。for(int i=0。\039。}printf(\n)。fp = fopen(filename,r)。}//while endprintf(\n)。char WrittingFileName[Num]。printf(\nExit the system\n)。break。}else{printf(\nCan not delete the file:%s It may not be exist\n,DeleteFileName)。}else{//printf(\nSuccessfully Opening The File: %s The FileCode Is:%d\n,OpenFileName,)。break。printf(Input The Name Of Reading File: )。case 7:佛山科學(xué)技術(shù)學(xué)院課程設(shè)計(jì)用紙26printf(\nThe Selection Of validating the file is open or not\n)。printf(\nInput the filename to validate the reading file function: )。}}while(sel!=0)。佛山科學(xué)技術(shù)學(xué)院課程設(shè)計(jì)用紙28參考資料 《計(jì)算機(jī)操作系統(tǒng)教程》 (第 2 版)張堯?qū)W 史美林 編著 清華大學(xué)出版社 《操作系統(tǒng)實(shí)驗(yàn)指導(dǎo)》任愛(ài)華 李鵬 劉方毅 清華大學(xué)出版社 《操作系統(tǒng)實(shí)驗(yàn)教程——核心技術(shù)與編程實(shí)例》顧寶根 王立松 顧喜梅 科學(xué)出版社 《C++編程思想》 Bruck 著 侯捷譯 機(jī)械工業(yè)出版社 《C 語(yǔ)言程序中清除鍵盤緩沖區(qū)的方法》 楊長(zhǎng)虹 益陽(yáng)職業(yè)技術(shù)學(xué)院學(xué)報(bào)佛山科學(xué)技術(shù)學(xué)院課程設(shè)計(jì)用紙29附 錄include include include include include include include /*定義全局變量*/char root_dir[3]。int login()。void copy()。 break。 break。 } strcpy(pre_dir,C:\\)。佛山科學(xué)技術(shù)學(xué)院課程設(shè)計(jì)用紙31 FILE *fp。 printf(Press any key to exit...)。 clear()。 } logintime。 cmd_line[j] = calloc(255, sizeof(char))。 39。 if(strcmp(cmd_line[0],exit)==0) { exit(0)。 } else if(strcmp(cmd_line[0],cut)==0) { return 7。 }}void dir()/* 列出文件及文件夾 */{ struct ffblk ff。 while(findnext(amp。 if(strcmp(cmd_line[1],..)==0)/* 返回上一層目錄 */ { while(filepath[i]!=39。 amp。) { i++。 } } if(strcmp(,cmd_line[1])==0) { strcat(pre_dir,cmd_line[1])。%s39。 } else { printf(Delete dir error!\n)。 FILE *newfp。 } else { strcpy(sourcepath,cmd_line[1])。 } if((newfp=fopen(aimpath,w))==NULL) { printf(Can39。 char aimpath[255]。 strcat(sourcepath,cmd_line[1])。 } else佛山科學(xué)技術(shù)學(xué)院課程設(shè)計(jì)用紙38 { strcpy(aimpath,cmd_line[2])。:39。}void cut(){ char filepath[255]。 } if((oldfp=fopen(sourcepath,r))==NULL) { printf(Can39。) { strcpy(sourcepath,filepath)。 char sourcepath[255]。%s39。 strcpy(filepath,pre_dir)。 while(strcmp(,cmd_line[1])!=0) { if(findnext(amp。 } } else if(strcmp(cmd_line[1],\\)==0)/*返回根目錄*/ { while(filepath[i]!=39。 while(filepath[i]!=39。 char filepath[255]。 } else { printf( \t)。 } else if(strcmp(cmd_line[0],clear)==0) { clear()。 } else if(strcmp(cmd_line[0],del)==0) { return 5。 } ++i。\039。 printf(%s,pre_dir)。 getch()。 strcmp(,name)!=0) { } fclose(fp)。 if((fp=fopen(,r))==NULL) { printf(Can39。 char pass[10]。 break。 break。佛山科學(xué)技術(shù)學(xué)院課程設(shè)計(jì)用紙30 break。void deldir()。}。 實(shí)踐感受每次的課程設(shè)計(jì)都是對(duì)我們所學(xué)知識(shí)的一個(gè)深化,在實(shí)踐過(guò)程中能遇到許多的問(wèn)題,遇到問(wèn)題?分析問(wèn)題?解決問(wèn)題,這樣對(duì)知識(shí)的理解得到一個(gè)升華。default:printf(\nInput Illegal! Please ReInput The Aboved Number\n)。break。//printf(\n8 To validate the writting contents to file )。break。//printf(The CloseFileName=%s\n,CloseFileName)。int RelOfOpenFile = OpenFile(OpenFileName)。int RelOfDel = DeleteFile(DeleteFileName)。scanf(%s,CreateFileName)。while(sel!=0)do{sel = OperOfSel()。char OpenFileName[Num]。while((ch=fgetc(fp))!=EOF){count++。}fclose(fp)。ji2。i++){printf(%c,ReadContents[i])。//printf(ReadContents= %s\n,ReadContents)。=FP_OFF(ReadContents)。segregs)。char ReadContents[CNum*1024]。printf(\n\nThe number of contents you have write to file are: %d\n,sumChar)。inregs,amp。*/FileCode = result。佛山科學(xué)技術(shù)學(xué)院課程設(shè)計(jì)用紙18}printf(\n)。ki。temp = WriteContents[i]。segregs)。//=FP_OFF(WriteContents)。}//if(WriteContents[i]==39。i++。int temp=0。int i=0。if(2==result){printf(\nCan not input contents to file: %s ! It may not exist\n,filename)。=FP_OFF(filename)。outregs)。if(2==result){//printf(\nOpen the file: %s Failly! It may not exist\n,filename)。int86x(INTER,amp。struct SREGS segregs。outregs,amp。struct SREGS segregs。=FP_SEG(filename)。return。//Set the