显示任意汉字库内容的方法 河 北 袁津生 1993-09-10 有两种方法可以实现,一种是使用汉字库造字软件CC16A.COM来显示XHZK中的内容,但需要对CC16A.COM进行修改。假改CC16A.COM和DEBUG.COM都在A盘上,修改过程如下: 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() { FILEfp; inti,i1,i2,i3,row=0,col=0, trow=0; int gdriver=DETECT,gmode; char by[32]; long length; charf; printf("input name of HZK:"); gets(f); if((fp=fopen(f,"rb"))==NULL) { printf("cantopenfile!"); 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[i12+i2],7i3)) /判断该位是否为1/ putpixel(col+i28+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位/} (河北袁津生)