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

📄 eamain.c

📁 硬盘修复参考源码。其中包括对扇区读写剪切等操作的具体代码。
💻 C
📖 第 1 页 / 共 2 页
字号:
//********************************************
//文件名:EAMAIN.C
//功能:1. 调用读扇区汇编子程序
//      2. 调用写扇区汇编子程序
//      3. 对扇区数据进行十六进制读、字符读、
//         备份、拷贝、搬移、写入、清零操作
//********************************************
#include<stdio.h>                               //1.
#include<string.h>                              //2.
#include<conio.h>                               //3.
#include<ctype.h>                               //4.
#include<stdlib.h>                              //5.
extern RHD(int,int,int,int,char *);             //6.对读扇区汇编子程序的声明
extern WHD(int,int,int,int,char *);             //7.对写扇区汇编子程序的声明
void main(int argc,char *argv[])                //8.
{                                               //9.
   FILE *tmfp,*fp;                              //10.
   char h[512];                                 //11.
   char name[13];                               //12.
   char sh[13];                                 //13.
   char ch;                                     //14.
   int i,c;                                     //15.
   unsigned long k,k1;                          //16.
   long t=0;                                    //17.
   unsigned char s1,s2,s3,s4;                   //18.
                                                //19.
   if(argc==1)                                  //20.若命令行参数为1
   {                                            //21.
     printf("Enter EALLSE /? to get help.");    //22.
     printf("\n");                              //23.
     exit(0);                                   //24.
   }                                            //25.
   strcpy(sh,argv[1]);                          //26.拷贝字符串
   if((strcmp(sh,"/?")==0)&&argc==2)            //27.显示帮助提示
   {                                            //28.
     printf("The syntax of EALLSE.EXE is:");    //29.
     printf("\n");                              //30.
     printf("1.EALLSE [/?] is to get help.");   //31.
     printf("\n");                              //32.
     printf("2.EALLSE [/rh] is read sector.");  //33.
     printf("\n");                              //34.
     printf("3.EALLSE [/rc] is read sector.");  //35.
     printf("\n");                              //36.
     printf("4.EALLSE [/b] is backup sector."); //37.
     printf("\n");                              //38.
     printf("5.EALLSE [/c] is copy sector.");   //39.
     printf("\n");                              //40.
     printf("6.EALLSE [/m] is move sector.");   //41.
     printf("\n");                              //42.
     printf("7.EALLSE [/w] is write sector.");  //43.
     printf("\n");                              //44.
     printf("8.EALLSE [/cle] is clear sector.");//45.
     printf("\n");                              //46.
     exit(0);                                   //47.
   }                                            //48.
                                                //49.
   if((strcmp(sh,"/rh")==0)                     //50.十六进制显示
     ||(strcmp(sh,"/RH")==0)&&argc==2)          //51.
   {                                            //52.
     printf("Enter sector number: ");           //53.
     scanf("%lu",&k);                           //54.
     tmfp=tmpfile();                            //55.
     fwrite(&k,4,1,tmfp);                       //56.
     rewind(tmfp);                              //57.
     fread(&s4,1,1,tmfp);                       //58.
     fread(&s3,1,1,tmfp);                       //59.
     fread(&s2,1,1,tmfp);                       //60.
     fread(&s1,1,1,tmfp);                       //61.
     fclose(tmfp);                              //62.
     tmpnam(name);                              //63.建立一个临时文件名
     RHD(s1,s2,s3,s4,name);                     //64.调用读扇区汇编子程序
     clrscr();                                  //65.清屏
     fp=fopen(name,"rb");                       //66.
     for(i=1;i<=512;i++)                        //67.
     {                                          //68.
       c=fgetc(fp);                             //69.
       printf("%2x",c);                         //70.显示十六进制数据
       if(i%32==0)                              //71.
         printf("\n");                          //72.
     }                                          //73.
     printf("\n");                              //74.
     rewind(fp);                                //75.调整文件指针
     for(i=0;i<=511;i++)                        //76.
     fread(&h[i],1,1,fp);                       //77.
     fclose(fp);                                //78.
     remove(name);                              //79.删除临时文件
     printf("\n");                              //80.
     for(i=0;i<=511;i++)                        //81.
       t+=h[i];                                 //82.字节值累加
     printf("Total : %ld\n",t);                 //83.
   }                                            //84.
                                                //85.
   if((strcmp(sh,"/rc")==0)                     //86.字符显示
     ||(strcmp(sh,"/RC")==0)&&argc==2)          //87.
   {                                            //88.
     printf("Enter sector number: ");           //89.
     scanf("%lu",&k);                           //90.
     tmfp=tmpfile();                            //91.
     fwrite(&k,4,1,tmfp);                       //92.
     rewind(tmfp);                              //93.
     fread(&s4,1,1,tmfp);                       //94.
     fread(&s3,1,1,tmfp);                       //95.
     fread(&s2,1,1,tmfp);                       //96.
     fread(&s1,1,1,tmfp);                       //97.
     fclose(tmfp);                              //98.
     tmpnam(name);                              //99.
     RHD(s1,s2,s3,s4,name);                     //100.
     clrscr();                                  //101.
     fp=fopen(name,"rb");                       //102.
     for(i=1;i<=512;i++)                        //103.
     {                                          //104.
       c=fgetc(fp);                             //105.
       printf("%c ",c);                         //106.显示字符
       if(i%32==0)                              //107.
         printf("\n");                          //108.
     }                                          //109.
     printf("\n");                              //110.
     rewind(fp);                                //111.
     for(i=0;i<=511;i++)                        //112.
     fread(&h[i],1,1,fp);                       //113.
     fclose(fp);                                //114.
     remove(name);                              //115.
     printf("\n");                              //116.
     for(i=0;i<=511;i++)                        //117.
       t+=h[i];                                 //118.
     printf("Total : %ld\n",t);                 //119.
   }                                            //120.
                                                //121.
   if((strcmp(sh,"/b")==0)                      //122.将扇区数据备份到文件
     ||(strcmp(sh,"/B")==0)&&argc==2)           //123.
   {                                            //124.
     printf("Enter sector number: ");           //125.
     scanf("%lu",&k);                           //126.
     printf("Enter file name: ");               //127.
     scanf("%s",name);                          //128.
     tmfp=tmpfile();                            //129.
     fwrite(&k,4,1,tmfp);                       //130.
     rewind(tmfp);                              //131.
     fread(&s4,1,1,tmfp);                       //132.
     fread(&s3,1,1,tmfp);                       //133.
     fread(&s2,1,1,tmfp);                       //134.
     fread(&s1,1,1,tmfp);                       //135.
     fclose(tmfp);                              //136.
     RHD(s1,s2,s3,s4,name);                     //137.
     clrscr();                                  //138.
     fp=fopen(name,"rb");                       //139.
     for(i=1;i<=512;i++)                        //140.
     {                                          //141.
       c=fgetc(fp);                             //142.
       printf("%2x",c);                         //143.
       if(i%32==0)                              //144.
         printf("\n");                          //145.
     }                                          //146.
     printf("\n");                              //147.
     fclose(fp);                                //148.
   }                                            //149.
                                                //150.
   if((strcmp(sh,"/c")==0)                      //151.拷贝扇区数据
     ||(strcmp(sh,"/C")==0)&&argc==2)           //152.
   {                                            //153.
     printf("Enter SOURCE sector number: ");    //154.
     scanf("%lu",&k);                           //155.
     printf("Enter TARGET sector number: ");    //156.
     scanf("%lu",&k1);                          //157.
     tmfp=tmpfile();                            //158.
     fwrite(&k,4,1,tmfp);                       //159.

⌨️ 快捷键说明

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