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

📄 cofimain.c

📁 硬盘扇区读写技术-修复硬盘与恢复文件随书源代码
💻 C
字号:
//********************************************
//文件名:COFIMAIN.C
//功能:1. 调用显示汉字函数
//      2. 调用字符处理函数
//      3. 调用读扇区汇编子程序
//      4. 通过连续读取扇区,每次恢复一个簇的文件数据
//********************************************
#include<string.h>                        //1.
#include<graphics.h>                      //2.
#include<stdio.h>                         //3.
#include<stdlib.h>                        //4.
#include<conio.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 main()                               //10.
{                                         //11.
  FILE *tmfp,*fp;                         //12.
  int i,j;                                //13.
  int c,y=0;                              //14.
  unsigned int m;                         //15.
  unsigned char h[512];                   //16.
  char name[13];                          //17.
  char sh[13];                            //18.
  unsigned long k;                        //19.
  unsigned char s1,s2,s3,s4;              //20.
  extern char gsh[16];                    //21.
  int gdriver=DETECT,gmode;               //22.
  registerbgidriver(EGAVGA_driver);       //23.
  initgraph(&gdriver,&gmode,"");          //24.
  setbkcolor(0);                          //25.
  cleardevice();                          //26.
                                          //27.
  setviewport(0,20,400,40,0);             //28.
  outhz(0,0,"输入需要建立的文件名:",7);  //29.
  finame(190,20);                         //30.
  strcpy(sh,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.
    y=40;                                 //52.调整坐标
  }                                       //53.
  setviewport(0,y+40,400,y+60,0);         //54.
  outhz(0,0,"输入簇的起始扇区号:",7);    //55.
  finame(170,y+40);                       //56.
  k=atol(gsh);                            //57.
  setviewport(0,y+60,400,y+80,0);         //58.
  outhz(0,0,"输入每簇占用的扇区数:",7);  //59.
  finame(190,y+60);                       //60.
  m=atoi(gsh);                            //61.
  for(j=1;j<=m;j++)                       //62.
  {                                       //63.
    tmfp=tmpfile();                       //64.
    fwrite(&k,4,1,tmfp);                  //65.
    rewind(tmfp);                         //66.
    fread(&s4,1,1,tmfp);                  //67.
    fread(&s3,1,1,tmfp);                  //68.
    fread(&s2,1,1,tmfp);                  //69.
    fread(&s1,1,1,tmfp);                  //70.
    fclose(tmfp);                         //71.
    tmpnam(name);                         //72.
    RHD(s1,s2,s3,s4,name);                //73.调用读扇区汇编子程序
    fp=fopen(name,"rb");                  //74.
    for(i=0;i<=511;i++)                   //75.
    {  h[i]=fgetc(fp);  }                 //76.
    fclose(fp);                           //77.
    fp=fopen(sh,"ab+");                   //78.以填加方式打开文件
    for(i=0;i<=511;i++)                   //79.
    {  fputc(h[i],fp);  }                 //80.
    fclose(fp);                           //81.
    k++;                                  //82.扇区号增1
    remove(name);                         //83.
  }                                       //84.
  closegraph();                           //85.
}                                         //86.
char gsh[16];                             //87.

⌨️ 快捷键说明

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