📄 lockmain.c
字号:
void cle() //499.扇区清零函数
{ //500.
FILE *tmfp,*hdfp,*fp; //501.
char h[512]; //502.
char tmp[13]; //503.
int i,c; //504.
int fat; //505.
unsigned byte,number=0; //506.
unsigned long sec[120]; //507.
unsigned long k=0,m; //508.
unsigned long data1,data2; //509.
unsigned char s1,s2,s3,s4; //510.
//511.
hdfp=fopen("data.hd","rb"); //512.
tmpnam(tmp); //513.
fp=fopen(tmp,"wb+"); //514.
for(i=0;i<=511;i++) //515.
{ //516.
c=fgetc(hdfp); //517.
fputc(c,fp); //518.
} //519.
fseek(fp,470,0); //520.
fread(&data1,4,1,fp); //521.
fseek(fp,450,0); //522.
fat=fgetc(fp); //523.
fclose(fp); //524.
remove(tmp); //525.
sec[number]=k; //526.
number++; //527.
m=k=k+63; //528.
for(i=1;i<=5;i++) //529.
{ //530.
sec[number]=k; //531.
number++; //532.
k++; //533.
} //534.
if(fat==0x0b) //535.
{ //536.
k=m+32; //537.
for(i=1;i<=6;i++) //538.
{ //539.
sec[number]=k; //540.
number++; //541.
k++; //542.
} //543.
} //544.
if(data1==0) //545.
; //546.
else //547.
{ //548.
k=data1; //549.
while(1) //550.
{ //551.
fseek(hdfp,512*(number),0); //552.
tmpnam(tmp); //553.
fp=fopen(tmp,"wb+"); //554.
for(i=0;i<=511;i++) //555.
{ //556.
c=fgetc(hdfp); //557.
fputc(c,fp); //558.
} //559.
fseek(fp,470,0); //560.
fread(&data2,4,1,fp); //561.
fseek(fp,450,0); //562.
fat=fgetc(fp); //563.
fclose(fp); //564.
remove(tmp); //565.
sec[number]=k; //566.
number++; //567.
m=k=k+63; //568.
for(i=1;i<=5;i++) //569.
{ //570.
sec[number]=k; //571.
number++; //572.
k++; //573.
} //574.
if(fat==0x0b) //575.
{ //576.
k=m+32; //577.
for(i=1;i<=6;i++) //578.
{ //579.
sec[number]=k; //580.
number++; //581.
k++; //582.
} //583.
} //584.
if(data2==0) //585.
break; //586.
k=data1+data2; //587.
} //588.
} //589.
fclose(hdfp); //590.
//591.
i=open("data.hd",O_CREAT); //592.
byte=filelength(i); //593.
close(i); //594.
remove("data.hd"); //595.删除数据备份文件
byte=byte/512; //596.计算扇区数
for(i=0;i<=511;i++) //597.
{ h[i]=0; } //598.
for(number=0;number<byte;number++) //599.
{ //600.
tmfp=tmpfile(); //601.
fwrite(&sec[number],4,1,tmfp); //602.
rewind(tmfp); //603.
fread(&s4,1,1,tmfp); //604.
fread(&s3,1,1,tmfp); //605.
fread(&s2,1,1,tmfp); //606.
fread(&s1,1,1,tmfp); //607.
fclose(tmfp); //608.
tmpnam(tmp); //609.
fp=fopen(tmp,"wb"); //610.
for(i=0;i<=511;i++) //611.
{ fputc(h[i],fp); } //612.
fclose(fp); //613.
WHD(s1,s2,s3,s4,tmp); //614.将扇区清零
remove(tmp); //615.
} //616.
} //617.
//618.
void jie() //619.解锁函数
{ //620.
FILE *tmfp,*hdfp,*fp; //621.
char ch; //622.
char tmp[13]; //623.
int i,c; //624.
int fat; //625.
unsigned byte,number=0; //626.
unsigned long sec[120]; //627.
unsigned long k=0,m; //628.
unsigned long data1,data2; //629.
unsigned char s1,s2,s3,s4; //630.
//631.
if((hdfp=fopen("data.hd","rb"))==NULL) //632.检测文件名
{ //633.
cleardevice(); //634.
setviewport(0,20,200,40,0); //635.
outhz(0,0,"文件[data.hd]在当前" //636.
"目录中没有找到!",7); //637.
outhz(0,20,"按任一键退出",7); //638.
getch(); //639.
closegraph(); //640.
exit(0); //641.
} //642.
tmpnam(tmp); //643.
fp=fopen(tmp,"wb+"); //644.
for(i=0;i<=511;i++) //645.
{ //646.
c=fgetc(hdfp); //647.
fputc(c,fp); //648.
} //649.
fseek(fp,470,0); //650.
fread(&data1,4,1,fp); //651.
fseek(fp,450,0); //652.
fat=fgetc(fp); //653.
fclose(fp); //654.
remove(tmp); //655.
sec[number]=k; //656.
number++; //657.
m=k=k+63; //658.
for(i=1;i<=5;i++) //659.
{ //660.
sec[number]=k; //661.
number++; //662.
k++; //663.
} //664.
if(fat==0x0b) //665.
{ //666.
k=m+32; //667.
for(i=1;i<=6;i++) //668.
{ //669.
sec[number]=k; //670.
number++; //671.
k++; //672.
} //673.
} //674.
if(data1==0) //675.
; //676.
else //677.
{ //678.
k=data1; //679.
while(1) //680.
{ //681.
fseek(hdfp,512*(number),0); //682.
tmpnam(tmp); //683.
fp=fopen(tmp,"wb+"); //684.
for(i=0;i<=511;i++) //685.
{ //686.
c=fgetc(hdfp); //687.
fputc(c,fp); //688.
} //689.
fseek(fp,470,0); //690.
fread(&data2,4,1,fp); //691.
fseek(fp,450,0); //692.
fat=fgetc(fp); //693.
fclose(fp); //694.
remove(tmp); //695.
sec[number]=k; //696.
number++; //697.
m=k=k+63; //698.
for(i=1;i<=5;i++) //699.
{ //700.
sec[number]=k; //701.
number++; //702.
k++; //703.
} //704.
if(fat==0x0b) //705.
{ //706.
k=m+32; //707.
for(i=1;i<=6;i++) //708.
{ //709.
sec[number]=k; //710.
number++; //711.
k++; //712.
} //713.
} //714.
if(data2==0) //715.
break; //716.
k=data1+data2; //717.
} //718.
} //719.
fclose(hdfp); //720.
//721.
i=open("data.hd",O_CREAT); //722.
byte=filelength(i); //723.
close(i); //724.
byte=byte/512; //725.
hdfp=fopen("data.hd","rb"); //726.
for(number=0;number<byte;number++) //727.
{ //728.
tmfp=tmpfile(); //729.
fwrite(&sec[number],4,1,tmfp); //730.
rewind(tmfp); //731.
fread(&s4,1,1,tmfp); //732.
fread(&s3,1,1,tmfp); //733.
fread(&s2,1,1,tmfp); //734.
fread(&s1,1,1,tmfp); //735.
fclose(tmfp); //736.
tmpnam(tmp); //737.
fp=fopen(tmp,"wb"); //738.
for(i=0;i<=511;i++) //739.
{ //740.
ch=fgetc(hdfp); //741.
fputc(ch,fp); //742.
} //743.
fclose(fp); //744.
WHD(s1,s2,s3,s4,tmp); //745.将数据写回扇区
remove(tmp); //746.
} //747.
fclose(hdfp); //748.
remove("data.hd"); //749.删除备份文件
} //750.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -