显示任意汉字库内容的方法
A>debug cc16a.com
-a930
332A:0930 db"A:XHZK"
332A:093D
-W
Writing 0E00 bytes
-Q
修改之后,在DOS提示符下键入:
A>CC16A<回车>
就可逐个地显示XHZK中的内容了。
另一种方法是编制程序来显示任意汉字库中的内容。将下面的程序编译后,在运行时程序首先是提示用户输入需要显示汉字库的路径和名称。显完一屏后按任意键将显示下一屏,直到显示完毕。
/显示汉字库xshzk.c/
#include<stdio.h>
#include<graphics.h>
#include<conio.h>
main()
{
FILEfp;
inti,i1,i2,i3,row=0,col=0,
trow=0;
int gdriver=DETECT,gmode;
char by[32];
long length;
charf;
printf("input name of HZK:");
gets(f);
if((fp=fopen(f,"rb"))==NULL)
{
printf("cantopenfile!");
exit(0);
}
initgraph(&gdriver,&gmode,"")
/图形模式初始化/
fseek(fp,0,2);
length=ftell(fp)/32L;
/测试汉字库文件的长度/
fseek(fp,0,SEEK-SET);
/文件指针定位到汉字字模的首字节/
for(i=0;i<length;i++){
if(kbhit()){getch();break;}
fread(by,32,1,fp);
(/读汉字模的32个字节/)
row=trow;
for(i1=0;i1<16,i1++){
/显示字模垂直方向16个点/
for(i2=0;i2<2;i2++)
/字模水平方向两个字节/
for(i3=0;i3<8;i3++)
/水平方向每个字节8位/
if(getbit(by[i12+i2],7i3))
/判断该位是否为1/
putpixel(col+i28+i3,row,GREEN);
/为1则在相应的位置画点/
row++;
}
col=col+16;
if(col>470){
col=0;trow+=20;
if(trow>450){
getch();
cleardevice();
col=0;trow=0;
}
}
}
tetch();
closegraph();
}
intgetbit(unsignedcharc,intn)
{
return((c>>n)&1);/将字节中的某位移到字节最低位并屏蔽掉其它7位/}
(河北袁津生)