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

📄 lockmain.c

📁 用c 写的实现硬盘锁程序(带汉显)
💻 C
📖 第 1 页 / 共 3 页
字号:
      getch();                              //245.
      closegraph();                         //246.
      exit(0);                              //247.
    }                                       //248.
    setviewport(0,40,200,60,0);             //249.
    outhz(0,0,"正在加锁,请稍等",13);       //250.
    jia();                                  //251.
    copyf();                                //252.
    cle();                                  //253.
    setviewport(0,80,200,120,0);            //254.
    outhz(0,20,"加锁成功",15);              //255.
    outhz(0,40,"按任一键退出",7);           //256.
    getch();                                //257.
    closegraph();                           //258.
  }                                         //259.
}                                           //260.
char gsh[16];                               //261.
                                            //262.
void jia()                                  //263.
{                                           //264.
  FILE *tmfp,*hdfp,*fp;                     //265.
  char h[512];                              //266.
  char tmp[13];                             //267.
  int i,j;                                  //268.
  int fat;                                  //269.
  unsigned long sec[120];                   //270.
  unsigned number=0;                        //271.
  unsigned long k=0,m;                      //272.
  unsigned long data1,data2;                //273.
  unsigned char s1,s2,s3,s4;                //274.
  char ch;                                  //275.
                                            //276.
  hdfp=fopen("data.hd","ab+");              //277.以添加方式打开文件
  tmfp=tmpfile();                           //278.
  fwrite(&k,4,1,tmfp);                      //279.
  rewind(tmfp);                             //280.
  fread(&s4,1,1,tmfp);                      //281.
  fread(&s3,1,1,tmfp);                      //282.
  fread(&s2,1,1,tmfp);                      //283.
  fread(&s1,1,1,tmfp);                      //284.
  fclose(tmfp);                             //285.
  tmpnam(tmp);                              //286.
  RHD(s1,s2,s3,s4,tmp);                     //287.
  sec[number]=k;                            //288.
  number++;                                 //289.
  fp=fopen(tmp,"rb");                       //290.
  for(i=0;i<=511;i++)                       //291.
  {                                         //292.
    ch=fgetc(fp);                           //293.
    fputc(ch,hdfp);                         //294.
  }                                         //295.
  fseek(fp,470,0);                          //296.
  fread(&data1,4,1,fp);                     //297.读扇区数字段值
  fseek(fp,450,0);                          //298.
  fat=fgetc(fp);                            //299.读分区格式字段值
  fclose(fp);                               //300.
  remove(tmp);                              //301.
                                            //302.
  m=k=k+63;                                 //303.
  for(j=1;j<=5;j++)                         //304.
  {                                         //305.
    tmfp=tmpfile();                         //306.
    fwrite(&k,4,1,tmfp);                    //307.
    rewind(tmfp);                           //308.
    fread(&s4,1,1,tmfp);                    //309.
    fread(&s3,1,1,tmfp);                    //310.
    fread(&s2,1,1,tmfp);                    //311.
    fread(&s1,1,1,tmfp);                    //312.
    fclose(tmfp);                           //313.
    tmpnam(tmp);                            //314.
    RHD(s1,s2,s3,s4,tmp);                   //315.
    sec[number]=k;                          //316.
    number++;                               //317.
    fp=fopen(tmp,"rb");                     //318.
    for(i=0;i<=511;i++)                     //319.
    {                                       //320.
      ch=fgetc(fp);                         //321.
      fputc(ch,hdfp);                       //322.
    }                                       //323.
    fclose(fp);                             //324.
    remove(tmp);                            //325.
    k++;                                    //326.
  }                                         //327.
  if(fat==0x0b)                             //328.若是FAT32分区
  {                                         //329.
    k=m+32;                                 //330.
    for(j=1;j<=6;j++)                       //331.
    {                                       //332.
      tmfp=tmpfile();                       //333.
      fwrite(&k,4,1,tmfp);                  //334.
      rewind(tmfp);                         //335.
      fread(&s4,1,1,tmfp);                  //336.
      fread(&s3,1,1,tmfp);                  //337.
      fread(&s2,1,1,tmfp);                  //338.
      fread(&s1,1,1,tmfp);                  //339.
      fclose(tmfp);                         //340.
      tmpnam(tmp);                          //341.
      RHD(s1,s2,s3,s4,tmp);                 //342.
      sec[number]=k;                        //343.
      number++;                             //344.
      fp=fopen(tmp,"rb");                   //345.
      for(i=0;i<=511;i++)                   //346.
      {                                     //347.
        ch=fgetc(fp);                       //348.
        fputc(ch,hdfp);                     //349.
      }                                     //350.
      fclose(fp);                           //351.
      remove(tmp);                          //352.
      k++;                                  //353.
    }                                       //354.
  }                                         //355.
  if(data1==0)                              //356.
  ;                                         //357.
  else                                      //358.
  {                                         //359.
    k=data1;                                //360.
    while(1)                                //361.
    {                                       //362.
      tmfp=tmpfile();                       //363.
      fwrite(&k,4,1,tmfp);                  //364.
      rewind(tmfp);                         //365.
      fread(&s4,1,1,tmfp);                  //366.
      fread(&s3,1,1,tmfp);                  //367.
      fread(&s2,1,1,tmfp);                  //368.
      fread(&s1,1,1,tmfp);                  //369.
      fclose(tmfp);                         //370.
      tmpnam(tmp);                          //371.
      RHD(s1,s2,s3,s4,tmp);                 //372.
      sec[number]=k;                        //373.
      number++;                             //374.
      fp=fopen(tmp,"rb");                   //375.
      for(i=0;i<=511;i++)                   //376.
      {                                     //377.
        ch=fgetc(fp);                       //378.
        fputc(ch,hdfp);                     //379.
      }                                     //380.
      fseek(fp,470,0);                      //381.
      fread(&data2,4,1,fp);                 //382.
      fseek(fp,450,0);                      //383.
      fat=fgetc(fp);                        //384.
      fclose(fp);                           //385.
      remove(tmp);                          //386.
                                            //387.
      m=k=k+63;                             //388.
      for(j=1;j<=5;j++)                     //389.
      {                                     //390.
        tmfp=tmpfile();                     //391.
        fwrite(&k,4,1,tmfp);                //392.
        rewind(tmfp);                       //393.
        fread(&s4,1,1,tmfp);                //394.
        fread(&s3,1,1,tmfp);                //395.
        fread(&s2,1,1,tmfp);                //396.
        fread(&s1,1,1,tmfp);                //397.
        fclose(tmfp);                       //398.
        tmpnam(tmp);                        //399.
        RHD(s1,s2,s3,s4,tmp);               //400.
        sec[number]=k;                      //401.
        number++;                           //402.
        fp=fopen(tmp,"rb");                 //403.
        for(i=0;i<=511;i++)                 //404.
        {                                   //405.
          ch=fgetc(fp);                     //406.
          fputc(ch,hdfp);                   //407.
        }                                   //408.
        fclose(fp);                         //409.
        remove(tmp);                        //410.
        k++;                                //411.
      }                                     //412.
      if(fat==0x0b)                         //413.
      {                                     //414.
        k=m+32;                             //415.
        for(j=1;j<=6;j++)                   //416.
        {                                   //417.
          tmfp=tmpfile();                   //418.
          fwrite(&k,4,1,tmfp);              //419.
          rewind(tmfp);                     //420.
          fread(&s4,1,1,tmfp);              //421.
          fread(&s3,1,1,tmfp);              //422.
          fread(&s2,1,1,tmfp);              //423.
          fread(&s1,1,1,tmfp);              //424.
          fclose(tmfp);                     //425.
          tmpnam(tmp);                      //426.
          RHD(s1,s2,s3,s4,tmp);             //427.
          sec[number]=k;                    //428.
          number++;                         //429.
          fp=fopen(tmp,"rb");               //430.
          for(i=0;i<=511;i++)               //431.
          {                                 //432.
            ch=fgetc(fp);                   //433.
            fputc(ch,hdfp);                 //434.
          }                                 //435.
          fclose(fp);                       //436.
          remove(tmp);                      //437.
          k++;                              //438.
        }                                   //439.
      }                                     //440.
      if(data2==0)                          //441.
        break;                              //442.
      k=data1+data2;                        //443.
    }                                       //444.
  }                                         //445.
  fclose(hdfp);                             //446.
}                                           //447.
                                            //448.
void copyf()                                //449.拷贝文件函数
{                                           //450.
  FILE *fp;                                 //451.
  int i;                                    //452.
  char ch;                                  //453.
  unsigned l,u;                             //454.
  char datahd[30720];                       //455.
                                            //456.
  i=open("data.hd",O_CREAT);                //457.
  l=filelength(i);                          //458.
  close(i);                                 //459.
  fp=fopen("data.hd","rb");                 //460.
  for(u=0;u<l;u++)                          //461.
    datahd[u]=fgetc(fp);                    //462.
  fclose(fp);                               //463.
  while(1)                                  //464.
  {                                         //465.
    setviewport(0,60,600,80,0);             //466.
    clearviewport();                        //467.
    setviewport(0,60,600,80,0);             //468.
    outhz(0,0,"是否将扇区数据文件拷贝"      //469.
      "到A盘(Y/N)?",7);              //470.
    ch=toupper(getch());                    //471.
    printf("\n");                           //472.
    if(ch==89)                              //473.
    {                                       //474.
      setviewport(0,60,600,80,0);           //475.
      clearviewport();                      //476.
      setviewport(0,60,600,80,0);           //477.
      outhz(0,0,"将软盘放入驱动器,"        //478.
      "按任一键拷贝文件",7);                //479.
      getch();                              //480.
      fp=fopen("a:\\data.hd","wb");         //481.
      for(u=0;u<l;u++)                      //482.
      fputc(datahd[u],fp);                  //483.
      fclose(fp);                           //484.
      setviewport(0,60,600,80,0);           //485.
      clearviewport();                      //486.
      setviewport(0,60,600,80,0);           //487.
      outhz(0,0,"文件拷贝成功,按任"        //488.
        "一键继续运行程序",7);              //489.
      getch();                              //490.
    }                                       //491.
    if(ch==78)                              //492.
    {                                       //493.
      break;                                //494.
    }                                       //495.
  }                                         //496.
}                                           //497.
                                            //498.

⌨️ 快捷键说明

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