?? fdt.c
字號:
//********************************************
//文件名:FDT.C
//功能:1. 調用讀扇區匯編子程序
// 2. 查找文件目錄登記項并建立扇區數據文件
// 3. 將找到的扇區數據用十六進制顯示
//********************************************
#include<stdio.h> //1.
#include<conio.h> //2.
#include<stdlib.h> //3.
#include<string.h> //4.
#include<dos.h> //5.
extern RHD(int,int,int,int,char *); //6.聲明讀扇區匯編子程序
void sou(void); //7.聲明發聲函數
void main(int argc,char *argv[]) //8.
{ //9.
FILE *tmfp,*fp; //10.
int i,j,c,d; //11.
int x,y,m; //12.
char *ch=""; //13.
char sh[13]; //14.
char fh[512]; //15.
char fstr[13]; //16.
char fdtch[32],fdtstr[12]; //17.
unsigned long k; //18.
long t=0; //19.
unsigned char s1,s2,s3,s4; //20.
//21.
if(argc==1) //22.
{ //23.
printf("Enter FDTFIND /? to get help."); //24.
printf("\n"); //25.
exit(0); //26.
} //27.
strcpy(sh,argv[1]); //28.
if((strcmp(sh,"/?")==0)&&argc==2) //29.
{ //30.
printf("The syntax of FDTFIND.EXE is:"); //31.
printf("\n"); //32.
printf("1.FDTFIND [/?] is to get help."); //33.
printf("\n"); //34.
printf("2.FDTFIND [/+] is find " //35.
"increase sector number."); //36.
printf("\n"); //37.
printf("3.FDTFIND [/-] is find " //38.
"reduce sector number."); //39.
printf("\n"); //40.
} //41.
//42.
if((strcmp(sh,"/+")==0) //43.判斷功能開關
||(strcmp(sh,"/-")==0)&&argc==2) //44.
{ //45.
printf("Enter find file name: "); //46.
gets(fstr); //47.接收字符串(含空格)
printf("Enter sector number: "); //48.
scanf("%lu",&k); //49.
printf("Enter create file name: "); //50.
scanf("%s",ch); //51.
strcpy(fstr,strupr(fstr)); //52.轉大寫并拷貝字符串
textcolor(143); //53.定義字符顏色并使之閃爍
cprintf("Press any key stop"); //54.
textcolor(7); //55.
cprintf("\n"); //56.
printf("\n"); //57.
printf("Find sector number: "); //58.
x=wherex(); //59.
y=wherey(); //60.
_setcursortype(_NOCURSOR); //61.隱藏光標
m=0; //62.
while(1) //63.
{ //64.
tmfp=tmpfile(); //65.
fwrite(&k,4,1,tmfp); //66.
rewind(tmfp); //67.
fread(&s4,1,1,tmfp); //68.
fread(&s3,1,1,tmfp); //69.
fread(&s2,1,1,tmfp); //70.
fread(&s1,1,1,tmfp); //71.
fclose(tmfp); //72.
RHD(s1,s2,s3,s4,ch); //73.調用讀扇區匯編子程序
fp=fopen(ch,"rb"); //74.
for(j=1;j<=16;j++) //75.每扇區16個登記項
{ //76.
for(i=0;i<=31;i++) //77.每登記項32個字節
fdtch[i]=fgetc(fp); //78.
for(d=0;d<11;d++) //79.文件名占用11個字節
fdtstr[d]=fdtch[d]; //80.
fdtstr[d]='\0'; //81.補結束符
if(!(strstr(fdtstr,fstr)==NULL)) //82.若找到字符串
{ //83.
m=3; //84.置標志
break; //85.跳出循環
} //86.
} //87.
gotoxy(x,y); //88.
printf("%lu",k); //89.
fclose(fp); //90.
if(kbhit()!=0) //91.判斷是否有鍵按下
{ //92.
break; //93.跳出循環
} //94.
if(m==3) //95.若找到扇區
{ //96.
break; //97.跳出循環
} //98.
if((strcmp(sh,"/+"))==0) //99.向扇區號增加的方向查找
k++; //100.
if((strcmp(sh,"/-"))==0) //101.向扇區號減少的方向查找
k--; //102.
} //103.
//104.
if(m==3) //105.若找到扇區
{ //106.
printf("\n"); //107.
fp=fopen(ch,"rb"); //108.
for(i=1;i<=512;i++) //109.
{ //110.
c=fgetc(fp); //111.
printf("%2x",c); //112.顯示十六進制數據
if(i%32==0) //113.
printf("\n"); //114.
} //115.
rewind(fp); //116.
for(i=0;i<=511;i++) //117.
fread(&fh[i],1,1,fp); //118.
fclose(fp); //119.
printf("\n"); //120.
for(i=0;i<=511;i++) //121.
t+=fh[i]; //122.字節累加
printf("Total : %ld\n",t); //123.
x=wherex(); //124.
y=wherey(); //125.
gotoxy(x,y); //126.
printf("Sector number " //127.
"final is: %lu\n",k); //128.
_setcursortype(_NORMALCURSOR); //129.恢復光標
printf("Press any key to exit"); //130.
sou(); //131.調用發聲函數
} //132.
printf("\n"); //133.
_setcursortype(_NORMALCURSOR); //134.
} //135.
} //136.
//137.
void sou(void) //138.發聲函數
{ //139.
unsigned long t; //140.
unsigned i; //141.
int j; //142.
while(1) //143.
{ //144.
i=1800; //145.
for(j=0;j<=2;j++) //146.
{ //147.
sound(i); //148.
for(t=0;t<20000000;t++) //149.
; //150.
i=i+200; //151.
nosound(); //152.
} //153.
i=i-300; //154.
sound(i); //155.
for(t=0;t<20000000;t++) //156.
; //157.
nosound(); //158.
for(t=0;t<100000000;t++) //159.
; //160.
if(kbhit()!=0) //161.
break; //162.
} //163.
} //164.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -