资源描述:
《通用子目录文件显示方法》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、通用子目录文件显示方法函数findfirst和findnext采用递归算法实现的。子目录和子目录文件的属性是根据属性字来判断。属性字格式如下图所示:-----------------
2、7
3、6
4、5
5、4
6、3
7、2
8、1
9、0
10、-----------------第0位(只读位):取1表示只读第1位(隐含位):取1表示隐含第2位(系统位):取1表示系统第3位(卷标位):取1表示卷标第4位(子目录位):取1表示子目录第5位(归档位):取1表示归档第6、7位:保留未用在子目示出错。作用CHKDSKA:,系统提示:CannotCHDIRt
11、oA:TEMP,treepastthispointnotprocessed使用本程序,运行结果认为TEMP为一文件,其属性为HSRALD,表示这是一个子目录,可据此推猜其为一加密子目录,可进一步用NORTON工具软件解密。三、实现实例实例是在386兼容机、BORLANDC++3.1集成环境和DOS6.0操作系统支持下调试通过,实现源程序附后。需要指出的不足是,由于fi#include<dos.h>#include<dir.h>#include<ctype.h>#include<
12、;string.h>#include<io.h>#defineESC27#defineCtrl_Break3#definePAGE_NUMBER22voiddiroperate(void);voidadd_attrib(structffblk);voidfull_screen_operate(void);chardriver[MAXDRIVE]="",dir[MAXDIR]="";charfile[MAXFILE]="",ext[MAXEXT]=""charcurdriver,curdir[MAXDI
13、R];charolddriver,olddir[MAXDIR],=0,dir_sum=0,file_sum=0;charbuffer[80*25];char*buffer_pointer=buffer;charCtrl_Bresk_flag;charattrib[7]="";main(intargc,char*argv[]){curdriver=getdisk();getcuchparameters!");exit(0)}if(argc==2){fnsplit(argv)[1],driver,dir,file,ex
14、t);if(strcpy(file)!=0){strcpy(file,exr,13);strcpy(FNfile);};if(strlen(driver)!=0){setdisk(toupper(driver[0])-`A')setdisk(toupper(drive[0])-`A')getc-1==0)printf("Nosub_directories.")elseprintf("%ddirectories.",dir_sum-1)if(file_sum==0)printf("Nofiles.")else
15、printf("%dfiles.",file_sum);if(strlen(driver)!=0){chdir(olddir);};setdisk(curdriver);chdir(curdir);return(0);}voiddir_operate(void){structffblkdirment;intdone,p,byte_num;unsignedintyear,month,date,hourminute;charpath[MAXDIR];/*begintosearchallpossiblefiles*/do
16、ne=findfirst(FN,dirment,0x2f);getc++;page_sum++;if(page_sum>=PAGE_NUMBER)full_screen_operate();/*eanditsattributeintobuffer*/byte_num=sprintf(buffer_pointer,"Directory%s",path);buffer_poiner+=byte_unm;byte_unm=sprintf(buffer_pointer,"%6s",attrib);buffer_poi
17、nter+=byte_num;++;file_sum++;if(page_sum>=PAGE_NUMBER)full_screen_operate();/*eanditslength,time,attributeintobuffer*/bytp_num=sprintf(buffer_pointer,"%20s%8ld",do