?? viewmain.c
字號(hào):
//********************************************
//文件名:VIEWMAIN.C
//功能:1. 調(diào)用顯示漢字函數(shù)
// 2. 調(diào)用字符處理函數(shù)
// 3. 調(diào)用匯編子程序讀扇區(qū)數(shù)據(jù)
// 4. 將參數(shù)傳遞給匯編子程序并接受返回值
// 5. 可以動(dòng)態(tài)切換字符和十六進(jìn)制顯示方式
// 6. 可以動(dòng)態(tài)按遞增或遞減的方式查看扇區(qū)數(shù)據(jù)
// 7. 可以動(dòng)態(tài)輸入扇區(qū)號(hào)查看扇區(qū)數(shù)據(jù)
// 8. 可以動(dòng)態(tài)將扇區(qū)數(shù)據(jù)寫入文件保存
//********************************************
#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 VIEWHD(int,int,int,int,int); //9.聲明讀字符匯編子程序
int outhz(int,int,char *,int); //10.聲明漢字顯示函數(shù)
void finame(int,int); //11.聲明字符處理函數(shù)
void dispc(void); //12.聲明字符顯示函數(shù)
void disph(void); //13.聲明十六進(jìn)制顯示函數(shù)
unsigned char h[512]; //14.
//15.
void main() //16.
{ //17.
FILE *tmfp,*fp; //18.
char c; //19.
unsigned char sh[512]; //20.
char name[13]; //21.
char ch[20]; //22.
int i,u=0; //23.
long t; //24.
unsigned long k; //25.
unsigned int s1,s2,s3,s4; //26.
extern char gsh[16]; //27.
int gdriver=DETECT,gmode; //28.
registerbgidriver(EGAVGA_driver); //29.
initgraph(&gdriver,&gmode,""); //30.
setbkcolor(0); //31.
cleardevice(); //32.
//33.
outhz(0,20,"輸入需要查看的扇區(qū)號(hào):",7); //34.
finame(190,20); //35.
k=atol(gsh); //36.
while(1) //37.
{ //38.
tmfp=tmpfile(); //39.
fwrite(&k,4,1,tmfp); //40.
rewind(tmfp); //41.
fread(&s4,1,1,tmfp); //42.
fread(&s3,1,1,tmfp); //43.
fread(&s2,1,1,tmfp); //44.
fread(&s1,1,1,tmfp); //45.
fclose(tmfp); //46.
for(i=0;i<=511;i++) //47.
{ h[i]=VIEWHD(s1,s2,s3,s4,i); } //48.調(diào)用讀字符匯編子程序
for(i=0;i<=511;i++) //49.
sh[i]=h[i]; //50.將數(shù)據(jù)轉(zhuǎn)存內(nèi)部數(shù)組
//51.
while(1) //52.
{ //53.
if(u==65) //54.
{ //55.
cleardevice(); //56.
dispc(); //57.調(diào)用字符顯示函數(shù)
} //58.
if((u!=65)||(u==72)) //59.
{ //60.
cleardevice(); //61.
disph(); //62.調(diào)用十六進(jìn)制顯示函數(shù)
} //63.
tmfp=tmpfile(); //64.
for(i=0;i<=511;i++) //65.
{ fputc(h[i],tmfp); } //66.
rewind(tmfp); //67.
t=0; //68.
for(i=0;i<=511;i++) //69.
{ //70.
c=fgetc(tmfp); //71.
t+=c; //72.字節(jié)值累加
} //73.
fclose(tmfp); //74.
setviewport(0,320,620,400,0); //75.
outhz(0,0,"當(dāng)前查看的扇區(qū)號(hào)是:",7); //76.
ltoa(k,ch,10); //77.
outhz(170,0,ch,7); //78.
outhz(280,0,"512個(gè)字節(jié)的" //79.
"算術(shù)和是:",7); //80.
ltoa(t,ch,10); //81.
outhz(490,0,ch,7); //82.
outhz(0,20,"按[A]鍵查看扇區(qū)ASCII字符。" //83.選項(xiàng)提示
" 按[H]鍵查看扇區(qū)十六進(jìn)制數(shù)據(jù)。",7); //84.
outhz(0,40,"按[+]鍵查看下一個(gè)扇區(qū)。" //85.
" 按[-]鍵查看上一個(gè)扇區(qū)。",7); //86.
outhz(0,60,"按[E]鍵輸入查看的扇區(qū)號(hào)。" //87.
" 按[S]鍵將當(dāng)前數(shù)據(jù)存入文件。",7); //88.
outhz(0,80,"按[Esc]鍵退出程序。",7); //89.
//90.
while(1) //91.
{ //92.
u=toupper(getch()); //93.
if((u==65)||(u==72)||(u==43)||(u==45) //94.
||(u==69)||(u==83)||(u==27)) //95.
{ //96.
if(u==65) //97.
{ //98.
break; //99.
} //100.
if(u==72) //101.
{ //102.
break; //103.
} //104.
if(u==43) //105.
{ //106.
k++; //107.
break; //108.
} //109.
if(u==45) //110.
{ //111.
k--; //112.
break; //113.
} //114.
if(u==69) //115.
{ //116.
outhz(0,100,"輸入需要查看的" //117.
"扇區(qū)號(hào):",7); //118.
finame(190,420); //119.
k=atol(gsh); //120.
break; //121.
} //122.
if(u==83) //123.
{ //124.
setviewport(0,420,400,440,0); //125.
outhz(0,0,"輸入建立的文件名:",7); //126.
finame(160,420); //127.
strcpy(name,gsh); //128.
if((fp=fopen(gsh,"rb"))!=NULL) //129.若打開文件成功
{ //130.
fclose(fp); //131.
setviewport(0,440,400,460,0); //132.
strcat(gsh,"文件在當(dāng)前目錄下已經(jīng)" //133.
"存在!是否繼續(xù)運(yùn)行(Y/N)?"); //134.
outhz(0,0,gsh,14); //135.
c=toupper(getch()); //136.
while((c==78)||(c==89)) //137.
{ //138.
if(c==78) //139.
{ //140.
closegraph(); //141.
exit(0); //142.
} //143.
if(c==89) //144.
break; //145.
} //146.
} //147.
//148.
fp=fopen(name,"wb"); //149.以寫方式打開文件
for(i=0;i<=511;i++) //150.
{ fputc(sh[i],fp); } //151.將數(shù)據(jù)輸出到文件
fclose(fp); //152.
break; //153.
} //154.
if(u==27) //155.
{ //156.
closegraph(); //157.
exit(0); //158.
} //159.
} //160.
} //161.
break; //162.
} //163.
} //164.
} //165.
char gsh[16]; //166.
//167.
void dispc() //168.字符顯示函數(shù)
{ //169.
char q[2]; //170.
int x,y,i,j,k; //171.
int x1,x2,y1,y2; //172.
x1=0; x2=600; //173.
y1=0; y2=20; //174.
i=0; j=0; //175.
while(j<16) //176.
{ //177.
setviewport(x1,y1,x2,y2,0); //178.
x=0; y=0; k=0; //179.
while(k<32) //180.
{ //181.
moveto(x,y); //182.
*q=h[i]; //183.
*(q+1)='\0'; //184.
settextstyle(DEFAULT_FONT, //185.
HORIZ_DIR,1); //186.
outtextxy(x,y+4,q); //187.
x+=8+1; i++; k++; //188.
} //189.
j++; //190.
y1=y1+20; y2=y2+20; //191.
} //192.
} //193.
//194.
void disph() //195.十六進(jìn)制顯示函數(shù)
{ //196.
FILE *tmfp; //197.
char q[2]; //198.
int x,y,m; //199.
int i,j,k,l; //200.
int x1,x2,y1,y2; //201.
x1=0; x2=600; //202.
y1=0; y2=20; //203.
i=0; j=0; //204.
while(j<16) //205.
{ //206.
setviewport(x1,y1,x2,y2,0); //207.
x=0; y=0; k=0; //208.
while(k<32) //209.
{ //210.
moveto(x,y); //211.
tmfp=tmpfile(); //212.
m=h[i]; //213.
fprintf(tmfp,"%2x",m); //214.
rewind(tmfp); //215.
l=0; //216.
while(l<2) //217.
{ //218.
*q=fgetc(tmfp); //219.
*(q+1)='\0'; //220.
settextstyle(DEFAULT_FONT, //221.
HORIZ_DIR,1); //222.
outtextxy(x,y+4,q); //223.
x+=8+1; l++; //224.
} //225.
i++; k++; //226.
fclose(tmfp); //227.
} //228.
j++; //229.
y1=y1+20; y2=y2+20; //230.
} //231.
} //232.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -