📄 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 + -