?? ecrmain.c
字號:
//********************************************
//文件名:ECRMAIN.C
//功能:1. 調用匯編子程序讀扇區數據并建立存儲文件
// 2. 調用顯示漢字函數
// 3. 調用字符處理函數
// 4. 將扇區數據用十六進制顯示在屏幕上
//********************************************
#include<string.h> //1.
#include<graphics.h> //2.
#include<stdio.h> //3.
#include<conio.h> //4.
#include<stdlib.h> //5.
#include<ctype.h> //6.
extern RHD(int,int,int,int,char *); //7.聲明匯編子程序
int outhz(int,int,char *,int); //8.聲明漢字顯示函數
void finame(int,int); //9.聲明字符處理函數
void disph(void); //10.聲明十六進制輸出函數
unsigned char h[512]; //11.
void main() //12.
{ //13.
FILE *tmfp,*fp; //14.
int i,c; //15.
long t=0; //16.
long k; //17.
char fh[512]; //18.
char *ch=""; //19.
char sh[20]; //20.
extern char gsh[16]; //21.
unsigned char s1,s2,s3,s4; //22.
int gdriver=DETECT,gmode; //23.
registerbgidriver(EGAVGA_driver); //24.
initgraph(&gdriver,&gmode,""); //25.
setbkcolor(0); //26.
cleardevice(); //27.
//28.
outhz(0,20,"輸入需要建立的文件名:",7); //29.調用漢字顯示函數
finame(190,20); //30.調用字符處理函數
strcpy(ch,gsh); //31.拷貝字符串
if((fp=fopen(gsh,"rb"))!=NULL) //32.如果打開文件成功
{ //33.
fclose(fp); //34.
setviewport(0,20,400,40,0); //35.
strcat(gsh,"文件在當前目錄下" //36.
"已經存在!"); //37.
outhz(0,20,gsh,14); //38.
outhz(0,40,"是否繼續運行" //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.
cleardevice(); //54.
setviewport(0,0,400,20,0); //55.
outhz(0,20,"輸入扇區號:",7); //56.
finame(100,20); //57.
k=atol(gsh); //58.字符串轉數
tmfp=tmpfile(); //59.建立臨時文件
fwrite(&k,4,1,tmfp); //60.將扇區號寫入文件
rewind(tmfp); //61.指針移到文件頭
fread(&s4,1,1,tmfp); //62.讀一個字節
fread(&s3,1,1,tmfp); //63.
fread(&s2,1,1,tmfp); //64.
fread(&s1,1,1,tmfp); //65.
fclose(tmfp); //66.
RHD(s1,s2,s3,s4,ch); //67.調用匯編子程序并傳遞參數
fp=fopen(ch,"rb"); //68.
for(i=0;i<=511;i++) //69.
{ //70.
h[i]=fgetc(fp); //71.將字符讀入數組
} //72.
fclose(fp); //73.
cleardevice(); //74.
setviewport(0,0,400,20,0); //75.
disph(); //76.調用十六進制顯示函數
//77.
fp=fopen(ch,"rb"); //78.
for(i=0;i<=511;i++) //79.
{ //80.
fh[i]=fgetc(fp); //81.將字符讀入數組
} //82.
fclose(fp); //83.
for(i=0;i<=511;i++) //84.
t+=fh[i]; //85.字節累加
ltoa(t,sh,10); //86.數轉字符串
setviewport(0,320,400,340,0); //87.
outhz(0,20,"字節總算術和是:",7); //88.
outhz(0,40,"按任一鍵退出",7); //89.
outhz(140,20,sh,7); //90.
getch(); //91.
closegraph(); //92.
} //93.
char gsh[16]; //94.定義全局變量
//95.
void disph() //96.十六進制顯示函數
{ //97.
FILE *tmfp; //98.
char q[2]; //99.
int x,y,m; //100.
int i,j,k,l; //101.
int x1,x2,y1,y2; //102.
x1=0; x2=600; //103.
y1=0; y2=20; //104.
i=0; j=0; //105.
while(j<16) //106.
{ //107.
setviewport(x1,y1,x2,y2,0); //108.
x=0; y=0; k=0; //109.
while(k<32) //110.
{ //111.
moveto(x,y); //112.
tmfp=tmpfile(); //113.
m=h[i]; //114.
fprintf(tmfp,"%2x",m); //115.
rewind(tmfp); //116.
l=0; //117.
while(l<2) //118.
{ //119.
*q=fgetc(tmfp); //120.
*(q+1)='\0'; //121.
settextstyle(DEFAULT_FONT, //122.
HORIZ_DIR,1); //123.
outtextxy(x,y+4,q); //124.
x+=8+1; l++; //125.
} //126.
i++; k++; //127.
fclose(tmfp); //128.
} //129.
j++; //130.
y1=y1+20; y2=y2+20; //131.
} //132.
} //133.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -