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

📄 readmain.c

📁 硬盘扇区读写技术-修复硬盘与恢复文件随书源代码
💻 C
字号:
//********************************************
//文件名:READMAIN.C
//功能:1. 调用显示汉字函数
//      2. 调用字符处理函数
//      3. 读扇区数据文件,用十六进制或字符显示
//********************************************
#include<string.h>                       //1.
#include<graphics.h>                     //2.
#include<stdio.h>                        //3.
#include<conio.h>                        //4.
#include<stdlib.h>                       //5.
int outhz(int,int,char *,int);           //6. 对调用函数的声明
void finame(int,int);                    //7. 对调用函数的声明
void dispc(void);                        //8. 对调用函数的声明
void disph(void);                        //9. 对调用函数的声明
unsigned char h[512];                    //10.定义全局变量
void main(int argc,char *argv[])         //11.
{                                        //12.
  char ch[13];                           //13.
  char fh[512];                          //14.
  FILE *fp;                              //15.
  char *p;                               //16.
  long t=0;                              //17.
  int i,c;                               //18.
  extern char gsh[16];                   //19.
  int gdriver=DETECT,gmode;              //20.
  registerbgidriver(EGAVGA_driver);      //21.
  initgraph(&gdriver,&gmode,"");         //22.
  setbkcolor(0);                         //23.
  cleardevice();                         //24.
                                         //25.
  if(argc==1)                            //26.
  {                                      //27.
    outhz(0,20,"输入[HREADSF /?]"        //28.
    "获得帮助",7);                       //29.
    outhz(0,40,"按一个键退出",7);        //30.
    getch();                             //31.
    closegraph();                        //32.
    exit(0);                             //33.
  }                                      //34.
  if((strcmp(argv[1],"/?")==0)&&argc==2) //35.比较字符串
  {                                      //36.
    outhz(0,20,"程序HREADSF.EXE"         //37.
    "使用方法:",7);                     //38.
    outhz(0,40,"1. [HREADSF /?]"         //39.
    "获得帮助",7);                       //40.
    outhz(0,60,"2. [HREADSF /RH]"        //41.
    "显示十六进制数据",7);               //42.
    outhz(0,80,"3. [HREADSF /RC]"        //43.
    "显示字符",7);                       //44.
    outhz(0,100,"按一个键退出",7);       //45.
    getch();                             //46.
    closegraph();                        //47.
    exit(0);                             //48.
  }                                      //49.
                                         //50.
  if((strcmp(argv[1],"/rh")==0)          //51.比较字符串
    ||(strcmp(argv[1],"/RH")==0)         //52.
    &&argc==2)                           //53.
    {                                    //54.
      outhz(0,20,"输入文件名:",7);      //55.调用显示函数并传递参数
      finame(100,20);                    //56.调用字符处理函数
      fp=fopen(gsh,"rb");                //57.打开文件
      for(i=1;i<=512;i++)                //58.
      {                                  //59.
        h[i-1]=fgetc(fp);                //60.读文件中的一个字符
      }                                  //61.
      fclose(fp);                        //62.
      cleardevice();                     //63.
      disph();                           //64.调用十六进制显示函数
      setviewport(0,320,0,340,0);        //65.设置视区
      outhz(0,20,"字节总算术和是:",7);  //66.
      outhz(0,40,"按一个键退出",7);      //67.
      fp=fopen(gsh,"rb");                //68.
      for(i=1;i<=512;i++)                //69.
      {                                  //70.
        fh[i-1]=fgetc(fp);               //71.读文件中的一个字符
      }                                  //72.
      fclose(fp);                        //73.
      for(i=0;i<=511;i++)                //74.
        t+=fh[i];                        //75.字节累加
      ltoa(t,ch,10);                     //76.将数字转成字符串
      outhz(140,20,ch,7);                //77.调用函数输出字符串
    }                                    //78.
                                         //79.
  if((strcmp(argv[1],"/rc")==0)          //80.比较字符串
    ||(strcmp(argv[1],"/RC")==0)         //81.
    &&argc==2)                           //82.
    {                                    //83.
      outhz(0,20,"输入文件名:",7);      //84.
      finame(100,20);                    //85.
      fp=fopen(gsh,"rb");                //86.
      for(i=1;i<=512;i++)                //87.
      {                                  //88.
        h[i-1]=fgetc(fp);                //89.
      }                                  //90.
      fclose(fp);                        //91.
      cleardevice();                     //92.
      dispc();                           //93.调用字符显示函数
      setviewport(0,320,0,340,0);        //94.
      outhz(0,20,"字节总算术和是:",7);  //95.
      outhz(0,40,"按一个键退出",7);      //96.
      fp=fopen(gsh,"rb");                //97.
      for(i=1;i<=512;i++)                //98.
      {                                  //99.
        fh[i-1]=fgetc(fp);               //100.
      }                                  //101.
      fclose(fp);                        //102.
      for(i=0;i<=511;i++)                //103.
        t+=fh[i];                        //104.
      ltoa(t,ch,10);                     //105.
      outhz(140,20,ch,7);                //106.
    }                                    //107.
  if((strcmp(argv[1],"/rh")==0)          //108.比较字符串
    ||(strcmp(argv[1],"/RH")==0)         //109.
    ||(strcmp(argv[1],"/rc")==0)         //110.
    ||(strcmp(argv[1],"/RC")==0)         //111.
    &&argc==2)                           //112.
      getch();                           //113.
  else                                   //114.否则
  {                                      //115.
    outhz(0,20,"输入错误!",7);          //116.
    outhz(0,40,"按一个键退出",7);        //117.
    getch();                             //118.
  }                                      //119.
  closegraph();                          //120.
}                                        //121.
char gsh[16];                            //122.定义全局变量
                                         //123.
void dispc()                             //124.字符显示函数
{                                        //125.
  char q[2];                             //126.
  int x,y,i,j,k;                         //127.
  int x1,x2,y1,y2;                       //128.
  x1=0;  x2=600;                         //129.
  y1=0;  y2=20;                          //130.
  i=0;  j=0;                             //131.
  while(j<16)                            //132.显示16行
  {                                      //133.
    setviewport(x1,y1,x2,y2,0);          //134.
    x=0;  y=0;  k=0;                     //135.
    while(k<32)                          //136.每行显示32个字符
    {                                    //137.
      moveto(x,y);                       //138.移动坐标
      *q=h[i];                           //139.将字符赋给数组元素
      *(q+1)='\0';                       //140.补结束符
      settextstyle(DEFAULT_FONT,         //141.设置字符属性
      HORIZ_DIR,1);                      //142.
      outtextxy(x,y+4,q);                //143.输出字符串
      x+=8+1;  i++;   k++;               //144.
    }                                    //145.
    j++;                                 //146.
    y1=y1+20;  y2=y2+20;                 //147.移到下一行
  }                                      //148.
}                                        //149.
                                         //150.
void disph()                             //151.16进制显示函数
{                                        //152.
  FILE *tmfp;                            //153.
  char q[2];                             //154.
  int x,y,m;                             //155.
  int i,j,k,l;                           //156.
  int x1,x2,y1,y2;                       //157.
  x1=0;  x2=600;                         //158.
  y1=0;  y2=20;                          //159.
  i=0;  j=0;                             //160.
  while(j<16)                            //161.显示16行
  {                                      //162.
    setviewport(x1,y1,x2,y2,0);          //163.
    x=0;  y=0;  k=0;                     //164.
    while(k<32)                          //165.每行显示32个字节的值
    {                                    //166.
      moveto(x,y);                       //167.
      tmfp=tmpfile();                    //168.打开一个临时文件
      m=h[i];                            //169.将字符转成int型变量值
      fprintf(tmfp,"%2x",m);             //170.用十六进制写入文件
      rewind(tmfp);                      //171.调整文件指针
      l=0;                               //172.
      while(l<2)                         //173.每个字节显示2个字符
      {                                  //174.
        *q=fgetc(tmfp);                  //175.读文件中的一个字符
        *(q+1)='\0';                     //176.补结束符
        settextstyle(DEFAULT_FONT,       //177.
        HORIZ_DIR,1);                    //178.
        outtextxy(x,y+4,q);              //179.输出字符串
        x+=8+1;  l++;                    //180.
      }                                  //181.
      i++;   k++;                        //182.
      fclose(tmfp);                      //183.关闭临时文件
    }                                    //184.
    j++;                                 //185.
    y1=y1+20;  y2=y2+20;                 //186.移到下一行
  }                                      //187.
}                                        //188.

⌨️ 快捷键说明

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