显示任意汉字库内容的方法

Author: 河 北 袁津生 Date: 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位/}
        (河北袁津生)