c++控制台输出一个汉字的星阵

/////////////////////////////////////////////////////////////////
//首先下载字库,ftp://211.69.16.66/ucdos.exe,解压有个hzk16文件//
/////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <stdlib.h>
FILE *pfile;
unsigned char hanzi[32]; /* 16*16点阵 */
void read_hz(unsigned char hz[2]);
void draw_hz();

int main()
{
    unsigned char str[] = "我的汉字库";
    unsigned char *p = str;
    printf("%s\n",str);

    if(pfile=fopen("hzk16","rb")) /* ucdos的字库文件 */
    {
        while(p<str+strlen(str))
        {
            if(*p>127) /* 汉字 */
            {
                read_hz(p);
                draw_hz();
                p+=2;
            }
            else /* ASCII */
            {
                ++p; /* 忽略ASCII字符 */
            }
        }
        fclose(pfile);
    }
    else
    {
        printf("Can't Open hzk16\n");
    }
    return 0;
}
void read_hz(unsigned char hz[2])
{
    int  qu = hz[0]-0xA0; /* 区码 */
    int wei = hz[1]-0xA0; /* 位码 */
    int offset = (94*(qu-1)+(wei-1))*32;
    fseek(pfile,offset,SEEK_SET);
    fread(hanzi,32,1,pfile);
}
void draw_hz()
{
    int i,j;
    for(i=0;i<16;++i)
    {
        for(j=0x80;j;j>>=1)
        {
            printf("%c ",(j&hanzi[2*i])?'#':' ');
        }
        for(j=0x80;j;j>>=1)
        {
            printf("%c ",(j&hanzi[2*i+1])?'#':' ');
        }
        printf("\n");
    }
    printf("\n\n\n");
}

你可能感兴趣的:(C++,c,C#,J#)