?? babomain.c
字號(hào):
//********************************************
//文件名:BABOMAIN.C
//功能:1. 調(diào)用顯示漢字函數(shù)
// 2. 調(diào)用讀扇區(qū)匯編子程序
// 3. 將分區(qū)表和引導(dǎo)扇區(qū)的數(shù)據(jù)寫(xiě)入文件加以保存
//********************************************
#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.聲明讀扇區(qū)匯編子程序
int outhz(int,int,char *,int); //10.聲明漢字顯示函數(shù)
void filename(char *); //11.聲明文件名檢測(cè)函數(shù)
char tmp[13]; //12.
void main() //13.
{ //14.
FILE *tmfp,*fp,*bafp; //15.
char sh[512]; //16.
char file[3]; //17.
char th[20]; //18.
int i,c,y; //19.
int name=1; //20.
unsigned long k=0; //21.
unsigned long data1,data2; //22.
unsigned char s1,s2,s3,s4; //23.
int gdriver=DETECT,gmode; //24.
registerbgidriver(EGAVGA_driver); //25.
initgraph(&gdriver,&gmode,""); //26.
setbkcolor(0); //27.
cleardevice(); //28.
//29.
if((bafp=fopen("senumber.txt", //30.如果打開(kāi)文件成功
"rb"))!=NULL) //31.
{ //32.
fclose(bafp); //33.
setviewport(0,20,400,60,0); //34.
outhz(0,20,"本程序需要建立" //35.
"[SENUMBER.TXT]文件",7); //36.
outhz(0,40,"使用該名字的文件" //37.
"在當(dāng)前目錄下已經(jīng)存在!",14); //38.
outhz(0,60,"是否繼續(xù)運(yùn)行" //39.
"(Y/N)?",15); //40.
c=toupper(getch()); //41.
while((c==78)||(c==89)) //42.
{ //43.
if(c==78) //44.
{ //45.
closegraph(); //46.
exit(0); //47.
} //48.
if(c==89) //49.
break; //50.
} //51.
} //52.
//53.
y=20; //54.坐標(biāo)賦值
cleardevice(); //55.
setviewport(0,20,400,460,0); //56.
outhz(0,y,"分區(qū)表和分區(qū)引導(dǎo)" //57.
"記錄的扇區(qū)號(hào):",7); //58.
ltoa(k,th,10); //59.數(shù)轉(zhuǎn)字符串
y=y+20; //60.坐標(biāo)下移
outhz(0,y,"扇區(qū)號(hào):",7); //61.
outhz(80,y,th,7); //62.
bafp=fopen("senumber.txt","wb"); //63.以寫(xiě)方式建立文件
fprintf(bafp,"分區(qū)表和分區(qū)引導(dǎo)" //64.將標(biāo)題寫(xiě)入文件
"記錄的扇區(qū)號(hào):\n"); //65.
fprintf(bafp,"%lu\n",k); //66.將扇區(qū)號(hào)寫(xiě)入文件
tmfp=tmpfile(); //67.
fwrite(&k,4,1,tmfp); //68.
rewind(tmfp); //69.
fread(&s4,1,1,tmfp); //70.
fread(&s3,1,1,tmfp); //71.
fread(&s2,1,1,tmfp); //72.
fread(&s1,1,1,tmfp); //73.
fclose(tmfp); //74.
tmpnam(tmp); //75.返回臨時(shí)文件名
RHD(s1,s2,s3,s4,tmp); //76.調(diào)用讀扇區(qū)匯編子程序
fp=fopen(tmp,"rb"); //77.
for(i=0;i<=511;i++) //78.
sh[i]=fgetc(fp); //79.將文件讀入數(shù)組
fseek(fp,470,0); //80.移動(dòng)文件指針
fread(&data1,4,1,fp); //81.讀一個(gè)雙字
fclose(fp); //82.
itoa(name,file,10); //83.數(shù)轉(zhuǎn)字符串
filename(file); //84.調(diào)用文件名檢測(cè)函數(shù)
fp=fopen(file,"wb"); //85.以寫(xiě)方式建立文件
for(i=0;i<=511;i++) //86.
fputc(sh[i],fp); //87.將數(shù)組內(nèi)容輸出到文件
fclose(fp); //88.
name++; //89.文件名增1
k=k+63; //90.計(jì)算分區(qū)引導(dǎo)記錄扇區(qū)號(hào)
ltoa(k,th,10); //91.數(shù)轉(zhuǎn)字符串
y=y+20; //92.
outhz(0,y,"扇區(qū)號(hào):",7); //93.
outhz(80,y,th,7); //94.顯示扇區(qū)號(hào)
fprintf(bafp,"%lu\n",k); //95.將扇區(qū)號(hào)寫(xiě)入文件
tmfp=tmpfile(); //96.
fwrite(&k,4,1,tmfp); //97.
rewind(tmfp); //98.
fread(&s4,1,1,tmfp); //99.
fread(&s3,1,1,tmfp); //100.
fread(&s2,1,1,tmfp); //101.
fread(&s1,1,1,tmfp); //102.
fclose(tmfp); //103.
itoa(name,file,10); //104.數(shù)轉(zhuǎn)字符串
filename(file); //105.調(diào)用文件名檢測(cè)函數(shù)
RHD(s1,s2,s3,s4,file); //106.調(diào)用讀扇區(qū)匯編子程序
name++; //107.
if(data1==0) //108.若字段值為0
exit(0); //109.退出
//110.
k=data1; //111.下一個(gè)盤(pán)符的分區(qū)表扇區(qū)號(hào)
while(1) //112.
{ //113.
ltoa(k,th,10); //114.
y=y+20; //115.
outhz(0,y,"扇區(qū)號(hào):",7); //116.
outhz(80,y,th,7); //117.
fprintf(bafp,"%lu\n",k); //118.
tmfp=tmpfile(); //119.
fwrite(&k,4,1,tmfp); //120.
rewind(tmfp); //121.
fread(&s4,1,1,tmfp); //122.
fread(&s3,1,1,tmfp); //123.
fread(&s2,1,1,tmfp); //124.
fread(&s1,1,1,tmfp); //125.
fclose(tmfp); //126.
RHD(s1,s2,s3,s4,tmp); //127.
fp=fopen(tmp,"rb"); //128.
for(i=0;i<=511;i++) //129.
sh[i]=fgetc(fp); //130.
fseek(fp,470,0); //131.移動(dòng)文件指針
fread(&data2,4,1,fp); //132.讀一個(gè)雙字
fclose(fp); //133.
itoa(name,file,10); //134.
filename(file); //135.
fp=fopen(file,"wb"); //136.
for(i=0;i<=511;i++) //137.
fputc(sh[i],fp); //138.
fclose(fp); //139.
name++; //140.
k=k+63; //141.計(jì)算分區(qū)引導(dǎo)記錄扇區(qū)號(hào)
ltoa(k,th,10); //142.
y=y+20; //143.
outhz(0,y,"扇區(qū)號(hào):",7); //144.
outhz(80,y,th,7); //145.
fprintf(bafp,"%lu\n",k); //146.
tmfp=tmpfile(); //147.
fwrite(&k,4,1,tmfp); //148.
rewind(tmfp); //149.
fread(&s4,1,1,tmfp); //150.
fread(&s3,1,1,tmfp); //151.
fread(&s2,1,1,tmfp); //152.
fread(&s1,1,1,tmfp); //153.
fclose(tmfp); //154.
itoa(name,file,10); //155.
filename(file); //156.
RHD(s1,s2,s3,s4,file); //157.
name++; //158.
if(data2==0) //159.若字段值為0
break; //160.跳出循環(huán)
k=data1+data2; //161.計(jì)算第三個(gè)盤(pán)符的分區(qū)表扇區(qū)號(hào)
} //162.
fclose(bafp); //163.
remove(tmp); //164.刪除臨時(shí)文件名
y=y+20; //165.
outhz(0,y,"分區(qū)表和分區(qū)引導(dǎo)" //166.
"記錄已經(jīng)建立備份文件",7); //167.
y=y+20; //168.
outhz(0,y,"按任一鍵退出",7); //169.
getch(); //170.
closegraph(); //171.
} //172.
//173.
void filename(char *p) //174.文件名檢測(cè)函數(shù)
{ //175.
FILE *fp; //176.
int c; //177.
if((fp=fopen(p,"rb"))!=NULL) //178.如果打開(kāi)文件成功
{ //179.
fclose(fp); //180.
cleardevice(); //181.
setviewport(0,0,400,20,0); //182.
outhz(0,20,"本程序需要建立" //183.
"文件:",7); //184.
outhz(180,20,p,7); //185.
outhz(0,40,"使用該名字的文件" //186.
"在當(dāng)前目錄下已經(jīng)存在!",14); //187.
outhz(0,60,"是否繼續(xù)運(yùn)行" //188.
"(Y/N)?",15); //189.
c=toupper(getch()); //190.
while((c==78)||(c==89)) //191.
{ //192.
if(c==78) //193.
{ //194.
remove(tmp); //195.刪除臨時(shí)文件名
closegraph(); //196.
exit(0); //197.
} //198.
if(c==89) //199.
break; //200.
} //201.
} //202.
} //203.
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -