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

📄 hallmain.c

📁 该代码中包含数十个磁盘以及文件系统信息获取和修复的代码
💻 C
📖 第 1 页 / 共 3 页
字号:
//********************************************
//文件名:HALLMAIN.C
//功能:1. 调用显示汉字函数
//      2. 调用字符处理函数
//      3. 调用读扇区汇编子程序
//      4. 调用写扇区汇编子程序
//      5. 对扇区数据进行十六进制读、字符读、
//         备份、拷贝、搬移、写入、清零操作
//********************************************
#include<string.h>                            //1.
#include<graphics.h>                          //2.
#include<stdio.h>                             //3.
#include<conio.h>                             //4.
#include<ctype.h>                             //5.
#include<fcntl.h>                             //6.
#include<io.h>                                //7.
#include<stdlib.h>                            //8.
extern RHD(int,int,int,int,char *);           //9.声明读扇区汇编子程序
extern WHD(int,int,int,int,char *);           //10.声明写扇区汇编子程序
int outhz(int,int,char *,int);                //11.声明汉字显示函数
void finame(int,int);                         //12.声明字符处理函数
void disph(void);                             //13.声明十六进制显示函数
unsigned char h[512];                         //14.
void main(int argc,char *argv[])              //15.
{                                             //16.
   FILE *tmfp,*fp;                            //17.
   char sh[13];                               //18.
   char name[13];                             //19.
   char th[20];                               //20.
   char fh[512];                              //21.
   char ch[2];                                //22.
   int i,j,c;                                 //23.
   int y1,y2;                                 //24.
   unsigned long k,k1;                        //25.
   long t=0;                                  //26.
   extern char gsh[16];                       //27.
   unsigned char s1,s2,s3,s4;                 //28.
   int gdriver=DETECT,gmode;                  //29.
   registerbgidriver(EGAVGA_driver);          //30.
   initgraph(&gdriver,&gmode,"");             //31.
   setbkcolor(0);                             //32.
   cleardevice();                             //33.
                                              //34.
   if(argc==1)                                //35.如果命令行参数为1
   {                                          //36.
     outhz(0,20,"输入[HEALLSE /?]"            //37.
     "获得帮助",7);                           //38.
     outhz(0,40,"按任一键退出",7);            //39.
     getch();                                 //40.
     closegraph();                            //41.
     exit(0);                                 //42.
   }                                          //43.
   strcpy(sh,argv[1]);                        //44.拷贝字符串
   if((strcmp(sh,"/?")==0)&&argc==2)          //45.显示帮助提示
   {                                          //46.
     outhz(0,20,"程序HEALLSE.EXE"             //47.
     "使用方法:",7);                         //48.
     outhz(0,40,"1. [HEALLSE /?]"             //49.
     "获得帮助",7);                           //50.
     outhz(0,60,"2. [HEALLSE /RH]"            //51.
     "显示十六进制数据",7);                   //52.
     outhz(0,80,"3. [HEALLSE /RC]"            //53.
     "显示字符",7);                           //54.
     outhz(0,100,"4. [HEALLSE /B]"            //55.
     "备份扇区数据",7);                       //56.
     outhz(0,120,"5. [HEALLSE /C]"            //57.
     "拷贝扇区数据",7);                       //58.
     outhz(0,140,"6. [HEALLSE /M]"            //59.
     "搬移扇区数据",7);                       //60.
     outhz(0,160,"7. [HEALLSE /W]"            //61.
     "文件数据写入扇区",7);                   //62.
     outhz(0,180,"8. [HEALLSE /CLE]"          //63.
     "扇区清零",7);                           //64.
     outhz(0,200,"按任一键退出",7);           //65.
     getch();                                 //66.
     closegraph();                            //67.
     exit(0);                                 //68.
   }                                          //69.
                                              //70.
   if((strcmp(sh,"/rh")==0)                   //71.用十六进制读扇区数据
     ||(strcmp(sh,"/RH")==0)&&argc==2)        //72.
   {                                          //73.
     setviewport(0,20,400,40,0);              //74.
     outhz(0,20,"输入扇区号:",7);            //75.调用汉字显示函数
     finame(100,40);                          //76.调用字符处理函数
     k=atol(gsh);                             //77.
     tmfp=tmpfile();                          //78.
     fwrite(&k,4,1,tmfp);                     //79.
     rewind(tmfp);                            //80.
     fread(&s4,1,1,tmfp);                     //81.
     fread(&s3,1,1,tmfp);                     //82.
     fread(&s2,1,1,tmfp);                     //83.
     fread(&s1,1,1,tmfp);                     //84.
     fclose(tmfp);                            //85.
     tmpnam(name);                            //86.
     RHD(s1,s2,s3,s4,name);                   //87.调用读扇区汇编子程序
     fp=fopen(name,"rb");                     //88.
     for(i=0;i<=511;i++)                      //89.
     {                                        //90.
       h[i]=fgetc(fp);                        //91.
     }                                        //92.
     fclose(fp);                              //93.
     cleardevice();                           //94.
     setviewport(0,0,620,20,0);               //95.
     disph();                                 //96.调用十六进制显示函数
     setviewport(0,320,400,400,0);            //97.
     outhz(0,0,"上面显示的是扇区文件"         //98.
     "十六进制数据:",7);                     //99.
     fp=fopen(name,"rb");                     //100.
     for(i=0;i<=511;i++)                      //101.
     {                                        //102.
       fh[i]=fgetc(fp);                       //103.
     }                                        //104.
     fclose(fp);                              //105.
     remove(name);                            //106.
     for(i=0;i<=511;i++)                      //107.
       t+=fh[i];                              //108.字节值累加
     ltoa(t,th,10);                           //109.
     outhz(0,40,"字节总算术和是:",7);        //110.
     outhz(0,60,"按任一键退出",7);            //111.
     outhz(140,40,th,7);                      //112.
   }                                          //113.
                                              //114.
   if((strcmp(sh,"/rc")==0)                   //115.以字符形式读扇区数据
     ||(strcmp(sh,"/RC")==0)&&argc==2)        //116.
   {                                          //117.
     setviewport(0,20,400,40,0);              //118.
     outhz(0,20,"输入扇区号:",7);            //119.
     finame(100,40);                          //120.
     k=atol(gsh);                             //121.
     tmfp=tmpfile();                          //122.
     fwrite(&k,4,1,tmfp);                     //123.
     rewind(tmfp);                            //124.
     fread(&s4,1,1,tmfp);                     //125.
     fread(&s3,1,1,tmfp);                     //126.
     fread(&s2,1,1,tmfp);                     //127.
     fread(&s1,1,1,tmfp);                     //128.
     fclose(tmfp);                            //129.
     tmpnam(name);                            //130.
     RHD(s1,s2,s3,s4,name);                   //131.
     cleardevice();                           //132.
     y1=0;                                    //133.
     y2=20;                                   //134.
     settextstyle(0,0,1);                     //135.
     fp=fopen(name,"rb");                     //136.
     for(j=1;j<=16;j++)                       //137.显示16行
     {                                        //138.
       setviewport(0,y1,600,y2,0);            //139.
       for(i=1;i<=32;i++)                     //140.显示32列
       {                                      //141.
         ch[0]=fgetc(fp);                     //142.读字符
         ch[1]='\0';                          //143.补结束符
         outtext(ch);                         //144.显示
       }                                      //145.
       y1=y1+20;                              //146.坐标调整
       y2=y2+20;                              //147.坐标调整
     }                                        //148.
     fclose(fp);                              //149.
     setviewport(0,320,300,400,0);            //150.
     outhz(0,0,"上面显示的是扇区文件"         //151.
     "ASCII字符:",7);                   //152.
     fp=fopen(name,"rb");                     //153.
     for(i=0;i<=511;i++)                      //154.
     {                                        //155.
       fh[i]=fgetc(fp);                       //156.
     }                                        //157.
     fclose(fp);                              //158.
     remove(name);                            //159.
     for(i=0;i<=511;i++)                      //160.
       t+=fh[i];                              //161.
     ltoa(t,th,10);                           //162.
     outhz(0,40,"字节总算术和是:",7);        //163.
     outhz(0,60,"按任一键退出",7);            //164.
     outhz(140,40,th,7);                      //165.
   }                                          //166.
                                              //167.
   if((strcmp(sh,"/b")==0)                    //168.将扇区数据备份到文件
     ||(strcmp(sh,"/B")==0)&&argc==2)         //169.
   {                                          //170.
     setviewport(0,20,400,40,0);              //171.
     outhz(0,20,"输入扇区号:",7);            //172.
     finame(100,40);                          //173.
     k=atol(gsh);                             //174.
     setviewport(0,40,400,60,0);              //175.
     outhz(0,20,"输入需要建立的文件名:",7);  //176.
     finame(190,60);                          //177.
     strcpy(name,gsh);                        //178.
     if((fp=fopen(gsh,"rb"))!=NULL)           //179.如果打开文件成功
     {                                        //180.
       fclose(fp);                            //181.
       setviewport(0,60,400,80,0);            //182.
       strcat(gsh,"文件在当前目录下"          //183.
       "已经存在!");                         //184.
       outhz(0,20,gsh,14);                    //185.
       outhz(0,40,"是否继续运行"              //186.
       "(Y/N)?",15);                    //187.
       c=toupper(getch());                    //188.

⌨️ 快捷键说明

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