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

📄 allmain.c

📁 该代码中包含数十个磁盘以及文件系统信息获取和修复的代码
💻 C
📖 第 1 页 / 共 2 页
字号:
//********************************************
//文件名:ALLMAIN.C
//功能:1. 调用显示汉字函数
//      2. 调用字符处理函数
//      3. 对扇区数据进行十六进制读、字符读、
//         备份、拷贝、搬移、写入、清零操作
//********************************************
#include<string.h>                            //1.
#include<graphics.h>                          //2.
#include<stdio.h>                             //3.
#include<conio.h>                             //4.
#include<ctype.h>                             //5.
#include<bios.h>                              //6.
#include<fcntl.h>                             //7.
#include<io.h>                                //8.
#include<stdlib.h>                            //9.
int outhz(int,int,char *,int);                //10.对调用函数的声明
void finame(int,int);                         //11.对调用函数的声明
void main(int argc,char *argv[])              //12.
{                                             //13.
   char h[512];                               //14.
   char sh[13];                               //15.
   FILE *fp;                                  //16.
   int i,c;                                   //17.
   int cyl,head,sector;                       //18.
   int cyl1,head1,sector1;                    //19.
   extern char gsh[16];                       //20.声明数组是外部变量
   int gdriver=DETECT,gmode;                  //21.
   registerbgidriver(EGAVGA_driver);          //22.
   initgraph(&gdriver,&gmode,"");             //23.
   setbkcolor(0);                             //24.
   cleardevice();                             //25.
                                              //26.
   if(argc==1)                                //27.命令行参数等于1时
   {                                          //28.
     outhz(0,20,"输入[HALLSE /?]获得帮助",7); //29.
     outhz(0,40,"按一个键退出",7);            //30.
     getch();                                 //31.
     closegraph();                            //32.关闭图形方式
     exit(0);                                 //33.
   }                                          //34.
   strcpy(sh,argv[1]);                        //35.
   if((strcmp(sh,"/?")==0)&&argc==2)          //36.比较开关字符串
   {                                          //37.
     outhz(0,20,"程序HALLSE.EXE"              //38.
     "使用方法:",7);                         //39.
     outhz(0,40,"1. [HALLSE /?]"              //40.
     "获得帮助",7);                           //41.
     outhz(0,60,"2. [HALLSE /RH]"             //42.
     "显示十六进制数据",7);                   //43.
     outhz(0,80,"3. [HALLSE /RC]"             //44.
     "显示字符",7);                           //45.
     outhz(0,100,"4. [HALLSE /B]"             //46.
     "备份扇区数据",7);                       //47.
     outhz(0,120,"5. [HALLSE /C]"             //48.
     "拷贝扇区数据",7);                       //49.
     outhz(0,140,"6. [HALLSE /M]"             //50.
     "搬移扇区数据",7);                       //51.
     outhz(0,160,"7. [HALLSE /W]"             //52.
     "文件数据写入扇区",7);                   //53.
     outhz(0,180,"8. [HALLSE /CLE]"           //54.
     "扇区清零",7);                           //55.
     outhz(0,200,"按一个键退出",7);           //56.
     getch();                                 //57.
     closegraph();                            //58.
     exit(0);                                 //59.
   }                                          //60.
                                              //61.
   if((strcmp(sh,"/rh")==0)                   //62.比较开关字符串
     ||(strcmp(sh,"/RH")==0)&&argc==2)        //63.
   {                                          //64.
     outhz(0,20,"输入柱面号:",7);            //65.
     finame(100,20);                          //66.
     cyl=atoi(gsh);                           //67.将字符串转为int型的值
     setviewport(0,20,400,40,0);              //68.
     outhz(0,20,"输入磁头号:",7);            //69.
     finame(100,40);                          //70.
     head=atoi(gsh);                          //71.
     setviewport(0,40,400,60,0);              //72.
     outhz(0,20,"输入扇区号:",7);            //73.
     finame(100,60);                          //74.
     sector=atoi(gsh);                        //75.
     closegraph();                            //76.
     biosdisk(0x02,0x80,head,cyl,sector,1,h); //77.
     fp=tmpfile();                            //78.
     for(i=0;i<=511;i++)                      //79.
       fputc(h[i],fp);                        //80.
     rewind(fp);                              //81.
     for(i=1;i<=512;i++)                      //82.
     {                                        //83.
       c=fgetc(fp);                           //84.
       printf("%2x",c);                       //85.
       if(i%32==0)                            //86.
       printf("\n");                          //87.
     }                                        //88.
     fclose(fp);                              //89.
     printf("\n");                            //90.
   }                                          //91.
                                              //92.
   if((strcmp(sh,"/rc")==0)                   //93.
     ||(strcmp(sh,"/RC")==0)&&argc==2)        //94.
   {                                          //95.
     outhz(0,20,"输入柱面号:",7);            //96.
     finame(100,20);                          //97.
     cyl=atoi(gsh);                           //98.
     setviewport(0,20,400,40,0);              //99.
     outhz(0,20,"输入磁头号:",7);            //100.
     finame(100,40);                          //101.
     head=atoi(gsh);                          //102.
     setviewport(0,40,400,60,0);              //103.
     outhz(0,20,"输入扇区号:",7);            //104.
     finame(100,60);                          //105.
     sector=atoi(gsh);                        //106.
     closegraph();                            //107.
     biosdisk(0x02,0x80,head,cyl,sector,1,h); //108.
     for(i=1;i<=512;i++)                      //109.
     {                                        //110.
       printf("%c ",h[i-1]);                  //111.
       if(i%32==0)                            //112.
       printf("\n");                          //113.
     }                                        //114.
     printf("\n");                            //115.
   }                                          //116.
                                              //117.
   if((strcmp(sh,"/b")==0)                    //118.
     ||(strcmp(sh,"/B")==0)&&argc==2)         //119.
   {                                          //120.
     outhz(0,20,"输入柱面号:",7);            //121.
     finame(100,20);                          //122.
     cyl=atoi(gsh);                           //123.
     setviewport(0,20,400,40,0);              //124.
     outhz(0,20,"输入磁头号:",7);            //125.
     finame(100,40);                          //126.
     head=atoi(gsh);                          //127.
     setviewport(0,40,400,60,0);              //128.
     outhz(0,20,"输入扇区号:",7);            //129.
     finame(100,60);                          //130.
     sector=atoi(gsh);                        //131.
     setviewport(0,60,400,80,0);              //132.
     outhz(0,20,"输入文件名:",7);            //133.
     finame(100,80);                          //134.
     fp=fopen(gsh,"wb");                      //135.
     biosdisk(0x02,0x80,head,cyl,sector,1,h); //136.
     for(i=0;i<=511;i++)                      //137.

⌨️ 快捷键说明

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