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

📄 ecrmain.c

📁 硬盘扇区读写技术-修复硬盘与恢复文件随书源代码
💻 C
字号:
//********************************************
//文件名:ECRMAIN.C
//功能:1. 调用汇编子程序读扇区数据并建立存储文件
//      2. 调用显示汉字函数
//      3. 调用字符处理函数
//      4. 将扇区数据用十六进制显示在屏幕上 
//********************************************
#include<string.h>                        //1.
#include<graphics.h>                      //2.
#include<stdio.h>                         //3.
#include<conio.h>                         //4.
#include<stdlib.h>                        //5.
#include<ctype.h>                         //6.
extern RHD(int,int,int,int,char *);       //7.声明汇编子程序
int outhz(int,int,char *,int);            //8.声明汉字显示函数
void finame(int,int);                     //9.声明字符处理函数
void disph(void);                         //10.声明十六进制输出函数
unsigned char h[512];                     //11.
void main()                               //12.
{                                         //13.
  FILE *tmfp,*fp;                         //14.
  int i,c;                                //15.
  long t=0;                               //16.
  long k;                                 //17.
  char fh[512];                           //18.
  char *ch="";                            //19.
  char sh[20];                            //20.
  extern char gsh[16];                    //21.
  unsigned char s1,s2,s3,s4;              //22.
  int gdriver=DETECT,gmode;               //23.
  registerbgidriver(EGAVGA_driver);       //24.
  initgraph(&gdriver,&gmode,"");          //25.
  setbkcolor(0);                          //26.
  cleardevice();                          //27.
                                          //28.
  outhz(0,20,"输入需要建立的文件名:",7); //29.调用汉字显示函数
  finame(190,20);                         //30.调用字符处理函数
  strcpy(ch,gsh);                         //31.拷贝字符串
  if((fp=fopen(gsh,"rb"))!=NULL)          //32.如果打开文件成功
  {                                       //33.
    fclose(fp);                           //34.
    setviewport(0,20,400,40,0);           //35.
    strcat(gsh,"文件在当前目录下"         //36.
    "已经存在!");                        //37.
    outhz(0,20,gsh,14);                   //38.
    outhz(0,40,"是否继续运行"             //39.
    "(Y/N)?",15);                   //40.
    c=toupper(getch());                   //41.
    while((c==78)||(c==89))               //42.
    {                                     //43.
      if(c==78)                           //44.
      {                                   //45.
        closegraph();                     //46.
        exit(0);                          //47.
      }                                   //48.
      if(c==89)                           //49.
        break;                            //50.
    }                                     //51.
  }                                       //52.
                                          //53.
  cleardevice();                          //54.
  setviewport(0,0,400,20,0);              //55.
  outhz(0,20,"输入扇区号:",7);           //56.
  finame(100,20);                         //57.
  k=atol(gsh);                            //58.字符串转数
  tmfp=tmpfile();                         //59.建立临时文件
  fwrite(&k,4,1,tmfp);                    //60.将扇区号写入文件
  rewind(tmfp);                           //61.指针移到文件头
  fread(&s4,1,1,tmfp);                    //62.读一个字节
  fread(&s3,1,1,tmfp);                    //63.
  fread(&s2,1,1,tmfp);                    //64.
  fread(&s1,1,1,tmfp);                    //65.
  fclose(tmfp);                           //66.
  RHD(s1,s2,s3,s4,ch);                    //67.调用汇编子程序并传递参数
  fp=fopen(ch,"rb");                      //68.
  for(i=0;i<=511;i++)                     //69.
  {                                       //70.
    h[i]=fgetc(fp);                       //71.将字符读入数组
  }                                       //72.
  fclose(fp);                             //73.
  cleardevice();                          //74.
  setviewport(0,0,400,20,0);              //75.
  disph();                                //76.调用十六进制显示函数
                                          //77.
  fp=fopen(ch,"rb");                      //78.
  for(i=0;i<=511;i++)                     //79.
  {                                       //80.
    fh[i]=fgetc(fp);                      //81.将字符读入数组
  }                                       //82.
  fclose(fp);                             //83.
  for(i=0;i<=511;i++)                     //84.
    t+=fh[i];                             //85.字节累加
  ltoa(t,sh,10);                          //86.数转字符串
  setviewport(0,320,400,340,0);           //87.
  outhz(0,20,"字节总算术和是:",7);       //88.
  outhz(0,40,"按任一键退出",7);           //89.
  outhz(140,20,sh,7);                     //90.
  getch();                                //91.
  closegraph();                           //92.
}                                         //93.
char gsh[16];                             //94.定义全局变量
                                          //95.
void disph()                              //96.十六进制显示函数
{                                         //97.
  FILE *tmfp;                             //98.
  char q[2];                              //99.
  int x,y,m;                              //100.
  int i,j,k,l;                            //101.
  int x1,x2,y1,y2;                        //102.
  x1=0;  x2=600;                          //103.
  y1=0;  y2=20;                           //104.
  i=0;  j=0;                              //105.
  while(j<16)                             //106.
  {                                       //107.
    setviewport(x1,y1,x2,y2,0);           //108.
    x=0;  y=0;  k=0;                      //109.
    while(k<32)                           //110.
    {                                     //111.
      moveto(x,y);                        //112.
      tmfp=tmpfile();                     //113.
      m=h[i];                             //114.
      fprintf(tmfp,"%2x",m);              //115.
      rewind(tmfp);                       //116.
      l=0;                                //117.
      while(l<2)                          //118.
      {                                   //119.
        *q=fgetc(tmfp);                   //120.
        *(q+1)='\0';                      //121.
        settextstyle(DEFAULT_FONT,        //122.
        HORIZ_DIR,1);                     //123.
        outtextxy(x,y+4,q);               //124.
        x+=8+1;  l++;                     //125.
      }                                   //126.
      i++;   k++;                         //127.
      fclose(tmfp);                       //128.
    }                                     //129.
    j++;                                  //130.
    y1=y1+20;  y2=y2+20;                  //131.
  }                                       //132.
}                                         //133.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -