⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fdt.c

📁 查找文件目录登记项代码
💻 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 + -