📄 lock.c
字号:
{ //229.
FILE *tmfp,*hdfp,*fp; //230.
char h[512]; //231.
char tmp[13]; //232.
int i,j; //233.
int fat; //234.
unsigned long sec[120]; //235.
unsigned number=0; //236.
unsigned long k=0,m; //237.设定扇区号从0开始
unsigned long data1,data2; //238.
unsigned char s1,s2,s3,s4; //239.
char ch; //240.
//241.
hdfp=fopen("data.hd","ab+"); //242.以添加方式打开文件
tmfp=tmpfile(); //243.
fwrite(&k,4,1,tmfp); //244.
rewind(tmfp); //245.
fread(&s4,1,1,tmfp); //246.
fread(&s3,1,1,tmfp); //247.
fread(&s2,1,1,tmfp); //248.
fread(&s1,1,1,tmfp); //249.
fclose(tmfp); //250.
tmpnam(tmp); //251.
RHD(s1,s2,s3,s4,tmp); //252.
sec[number]=k; //253.将扇区号存入数组
number++; //254.下标加1
fp=fopen(tmp,"rb"); //255.
for(i=0;i<=511;i++) //256.
{ //257.
ch=fgetc(fp); //258.读字符
fputc(ch,hdfp); //259.写字符
} //260.
fseek(fp,470,0); //261.移动文件指针
fread(&data1,4,1,fp); //262.读一个双字
fseek(fp,450,0); //263.称动文件指针
fat=fgetc(fp); //264.读一个字符
fclose(fp); //265.
remove(tmp); //266.删除临时文件
//267.
m=k=k+63; //268.
for(j=1;j<=5;j++) //269.连续读5个扇区
{ //270.
tmfp=tmpfile(); //271.
fwrite(&k,4,1,tmfp); //272.
rewind(tmfp); //273.
fread(&s4,1,1,tmfp); //274.
fread(&s3,1,1,tmfp); //275.
fread(&s2,1,1,tmfp); //276.
fread(&s1,1,1,tmfp); //277.
fclose(tmfp); //278.
tmpnam(tmp); //279.
RHD(s1,s2,s3,s4,tmp); //280.
sec[number]=k; //281.
number++; //282.
fp=fopen(tmp,"rb"); //283.
for(i=0;i<=511;i++) //284.
{ //285.
ch=fgetc(fp); //286.
fputc(ch,hdfp); //287.
} //288.
fclose(fp); //289.
remove(tmp); //290.
k++; //291.
} //292.
if(fat==0x0b) //293.若为FAT32分区
{ //294.
k=m+32; //295.
for(j=1;j<=6;j++) //296.连续读6个扇区
{ //297.
tmfp=tmpfile(); //298.
fwrite(&k,4,1,tmfp); //299.
rewind(tmfp); //300.
fread(&s4,1,1,tmfp); //301.
fread(&s3,1,1,tmfp); //302.
fread(&s2,1,1,tmfp); //303.
fread(&s1,1,1,tmfp); //304.
fclose(tmfp); //305.
tmpnam(tmp); //306.
RHD(s1,s2,s3,s4,tmp); //307.
sec[number]=k; //308.
number++; //309.
fp=fopen(tmp,"rb"); //310.
for(i=0;i<=511;i++) //311.
{ //312.
ch=fgetc(fp); //313.
fputc(ch,hdfp); //314.
} //315.
fclose(fp); //316.
remove(tmp); //317.
k++; //318.
} //319.
} //320.
if(data1==0) //321.若记录扇区数的字段值为0
; //322.空操作
else //323.否则
{ //324.开始读扩展分区数据
k=data1; //325.
while(1) //326.
{ //327.
tmfp=tmpfile(); //328.
fwrite(&k,4,1,tmfp); //329.
rewind(tmfp); //330.
fread(&s4,1,1,tmfp); //331.
fread(&s3,1,1,tmfp); //332.
fread(&s2,1,1,tmfp); //333.
fread(&s1,1,1,tmfp); //334.
fclose(tmfp); //335.
tmpnam(tmp); //336.
RHD(s1,s2,s3,s4,tmp); //337.
sec[number]=k; //338.
number++; //339.
fp=fopen(tmp,"rb"); //340.
for(i=0;i<=511;i++) //341.
{ //342.
ch=fgetc(fp); //343.
fputc(ch,hdfp); //344.
} //345.
fseek(fp,470,0); //346.
fread(&data2,4,1,fp); //347.
fseek(fp,450,0); //348.
fat=fgetc(fp); //349.
fclose(fp); //350.
remove(tmp); //351.
//352.
m=k=k+63; //353.
for(j=1;j<=5;j++) //354.
{ //355.
tmfp=tmpfile(); //356.
fwrite(&k,4,1,tmfp); //357.
rewind(tmfp); //358.
fread(&s4,1,1,tmfp); //359.
fread(&s3,1,1,tmfp); //360.
fread(&s2,1,1,tmfp); //361.
fread(&s1,1,1,tmfp); //362.
fclose(tmfp); //363.
tmpnam(tmp); //364.
RHD(s1,s2,s3,s4,tmp); //365.
sec[number]=k; //366.
number++; //367.
fp=fopen(tmp,"rb"); //368.
for(i=0;i<=511;i++) //369.
{ //370.
ch=fgetc(fp); //371.
fputc(ch,hdfp); //372.
} //373.
fclose(fp); //374.
remove(tmp); //375.
k++; //376.
} //377.
if(fat==0x0b) //378.
{ //379.
k=m+32; //380.
for(j=1;j<=6;j++) //381.
{ //382.
tmfp=tmpfile(); //383.
fwrite(&k,4,1,tmfp); //384.
rewind(tmfp); //385.
fread(&s4,1,1,tmfp); //386.
fread(&s3,1,1,tmfp); //387.
fread(&s2,1,1,tmfp); //388.
fread(&s1,1,1,tmfp); //389.
fclose(tmfp); //390.
tmpnam(tmp); //391.
RHD(s1,s2,s3,s4,tmp); //392.
sec[number]=k; //393.
number++; //394.
fp=fopen(tmp,"rb"); //395.
for(i=0;i<=511;i++) //396.
{ //397.
ch=fgetc(fp); //398.
fputc(ch,hdfp); //399.
} //400.
fclose(fp); //401.
remove(tmp); //402.
k++; //403.
} //404.
} //405.
if(data2==0) //406.
break; //407.
k=data1+data2; //408.
} //409.
} //410.
fclose(hdfp); //411.关闭备份文件
} //412.
//413.
void copyf() //414.拷贝文件函数
{ //415.
FILE *fp; //416.
int i; //417.
char ch; //418.
unsigned l,u; //419.
char datahd[30720]; //420.定义存储文件内容的数组
//421.
i=open("data.hd",O_CREAT); //422.
l=filelength(i); //423.
close(i); //424.
fp=fopen("data.hd","rb"); //425.
for(u=0;u<l;u++) //426.
datahd[u]=fgetc(fp); //427.将字符读入数组
fclose(fp); //428.
while(1) //429.
{ //430.
printf("Copy file [data.hd] " //431.
"to A:\\ (Y/N)?: "); //432.
ch=toupper(getche()); //433.
printf("\n"); //434.
if(ch==89) //435.
{ //436.
fp=fopen("a:\\data.hd","wb"); //437.以写方式打开A盘文件
for(u=0;u<l;u++) //438.
fputc(datahd[u],fp); //439.将字符输出到文件
fclose(fp); //440.
printf("Ok!\n"); //441.
} //442.
if(ch==78) //443.
{ //444.
break; //445.跳出循环
} //446.
} //447.
} //448.
//449.
void cle() //450.扇区清零函数
{ //451.
FILE *tmfp,*hdfp,*fp; //452.
char h[512]; //453.
char tmp[13]; //454.
int i,c; //455.
int fat; //456.
unsigned byte,number=0; //457.
unsigned long sec[120]; //458.
unsigned long k=0,m; //459.
unsigned long data1,data2; //460.
unsigned char s1,s2,s3,s4; //461.
//462.
hdfp=fopen("data.hd","rb"); //463.
tmpnam(tmp); //464.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -