📄 readmain.c
字号:
//********************************************
//文件名:READMAIN.C
//功能:1. 调用显示汉字函数
// 2. 调用字符处理函数
// 3. 读扇区数据文件,用十六进制或字符显示
//********************************************
#include<string.h> //1.
#include<graphics.h> //2.
#include<stdio.h> //3.
#include<conio.h> //4.
#include<stdlib.h> //5.
int outhz(int,int,char *,int); //6. 对调用函数的声明
void finame(int,int); //7. 对调用函数的声明
void dispc(void); //8. 对调用函数的声明
void disph(void); //9. 对调用函数的声明
unsigned char h[512]; //10.定义全局变量
void main(int argc,char *argv[]) //11.
{ //12.
char ch[13]; //13.
char fh[512]; //14.
FILE *fp; //15.
char *p; //16.
long t=0; //17.
int i,c; //18.
extern char gsh[16]; //19.
int gdriver=DETECT,gmode; //20.
registerbgidriver(EGAVGA_driver); //21.
initgraph(&gdriver,&gmode,""); //22.
setbkcolor(0); //23.
cleardevice(); //24.
//25.
if(argc==1) //26.
{ //27.
outhz(0,20,"输入[HREADSF /?]" //28.
"获得帮助",7); //29.
outhz(0,40,"按一个键退出",7); //30.
getch(); //31.
closegraph(); //32.
exit(0); //33.
} //34.
if((strcmp(argv[1],"/?")==0)&&argc==2) //35.比较字符串
{ //36.
outhz(0,20,"程序HREADSF.EXE" //37.
"使用方法:",7); //38.
outhz(0,40,"1. [HREADSF /?]" //39.
"获得帮助",7); //40.
outhz(0,60,"2. [HREADSF /RH]" //41.
"显示十六进制数据",7); //42.
outhz(0,80,"3. [HREADSF /RC]" //43.
"显示字符",7); //44.
outhz(0,100,"按一个键退出",7); //45.
getch(); //46.
closegraph(); //47.
exit(0); //48.
} //49.
//50.
if((strcmp(argv[1],"/rh")==0) //51.比较字符串
||(strcmp(argv[1],"/RH")==0) //52.
&&argc==2) //53.
{ //54.
outhz(0,20,"输入文件名:",7); //55.调用显示函数并传递参数
finame(100,20); //56.调用字符处理函数
fp=fopen(gsh,"rb"); //57.打开文件
for(i=1;i<=512;i++) //58.
{ //59.
h[i-1]=fgetc(fp); //60.读文件中的一个字符
} //61.
fclose(fp); //62.
cleardevice(); //63.
disph(); //64.调用十六进制显示函数
setviewport(0,320,0,340,0); //65.设置视区
outhz(0,20,"字节总算术和是:",7); //66.
outhz(0,40,"按一个键退出",7); //67.
fp=fopen(gsh,"rb"); //68.
for(i=1;i<=512;i++) //69.
{ //70.
fh[i-1]=fgetc(fp); //71.读文件中的一个字符
} //72.
fclose(fp); //73.
for(i=0;i<=511;i++) //74.
t+=fh[i]; //75.字节累加
ltoa(t,ch,10); //76.将数字转成字符串
outhz(140,20,ch,7); //77.调用函数输出字符串
} //78.
//79.
if((strcmp(argv[1],"/rc")==0) //80.比较字符串
||(strcmp(argv[1],"/RC")==0) //81.
&&argc==2) //82.
{ //83.
outhz(0,20,"输入文件名:",7); //84.
finame(100,20); //85.
fp=fopen(gsh,"rb"); //86.
for(i=1;i<=512;i++) //87.
{ //88.
h[i-1]=fgetc(fp); //89.
} //90.
fclose(fp); //91.
cleardevice(); //92.
dispc(); //93.调用字符显示函数
setviewport(0,320,0,340,0); //94.
outhz(0,20,"字节总算术和是:",7); //95.
outhz(0,40,"按一个键退出",7); //96.
fp=fopen(gsh,"rb"); //97.
for(i=1;i<=512;i++) //98.
{ //99.
fh[i-1]=fgetc(fp); //100.
} //101.
fclose(fp); //102.
for(i=0;i<=511;i++) //103.
t+=fh[i]; //104.
ltoa(t,ch,10); //105.
outhz(140,20,ch,7); //106.
} //107.
if((strcmp(argv[1],"/rh")==0) //108.比较字符串
||(strcmp(argv[1],"/RH")==0) //109.
||(strcmp(argv[1],"/rc")==0) //110.
||(strcmp(argv[1],"/RC")==0) //111.
&&argc==2) //112.
getch(); //113.
else //114.否则
{ //115.
outhz(0,20,"输入错误!",7); //116.
outhz(0,40,"按一个键退出",7); //117.
getch(); //118.
} //119.
closegraph(); //120.
} //121.
char gsh[16]; //122.定义全局变量
//123.
void dispc() //124.字符显示函数
{ //125.
char q[2]; //126.
int x,y,i,j,k; //127.
int x1,x2,y1,y2; //128.
x1=0; x2=600; //129.
y1=0; y2=20; //130.
i=0; j=0; //131.
while(j<16) //132.显示16行
{ //133.
setviewport(x1,y1,x2,y2,0); //134.
x=0; y=0; k=0; //135.
while(k<32) //136.每行显示32个字符
{ //137.
moveto(x,y); //138.移动坐标
*q=h[i]; //139.将字符赋给数组元素
*(q+1)='\0'; //140.补结束符
settextstyle(DEFAULT_FONT, //141.设置字符属性
HORIZ_DIR,1); //142.
outtextxy(x,y+4,q); //143.输出字符串
x+=8+1; i++; k++; //144.
} //145.
j++; //146.
y1=y1+20; y2=y2+20; //147.移到下一行
} //148.
} //149.
//150.
void disph() //151.16进制显示函数
{ //152.
FILE *tmfp; //153.
char q[2]; //154.
int x,y,m; //155.
int i,j,k,l; //156.
int x1,x2,y1,y2; //157.
x1=0; x2=600; //158.
y1=0; y2=20; //159.
i=0; j=0; //160.
while(j<16) //161.显示16行
{ //162.
setviewport(x1,y1,x2,y2,0); //163.
x=0; y=0; k=0; //164.
while(k<32) //165.每行显示32个字节的值
{ //166.
moveto(x,y); //167.
tmfp=tmpfile(); //168.打开一个临时文件
m=h[i]; //169.将字符转成int型变量值
fprintf(tmfp,"%2x",m); //170.用十六进制写入文件
rewind(tmfp); //171.调整文件指针
l=0; //172.
while(l<2) //173.每个字节显示2个字符
{ //174.
*q=fgetc(tmfp); //175.读文件中的一个字符
*(q+1)='\0'; //176.补结束符
settextstyle(DEFAULT_FONT, //177.
HORIZ_DIR,1); //178.
outtextxy(x,y+4,q); //179.输出字符串
x+=8+1; l++; //180.
} //181.
i++; k++; //182.
fclose(tmfp); //183.关闭临时文件
} //184.
j++; //185.
y1=y1+20; y2=y2+20; //186.移到下一行
} //187.
} //188.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -