以下是在网上找到的一段代码,改了一点,TC上可运行
#include<graphics.h>
#include<stdio.h>
#include<fcntl.h>
#include<io.h>
#include<stdlib.h>
#include<conio.h>
void main()
{
int x,y;
char *s="汉字显示程序";
FILE *fp;
char buffer[32];
/*buffer用来存储一个汉字*/
register m,n,i,j,k;
unsigned char qh,wh;
unsigned long offset;
int gd=DETECT,gm;
/*图形屏幕初始化*/
initgraph(&gd,&gm,"C:\\TC20H\\BGI");
setbkcolor(15);
if ((fp=fopen("hzk16","rb"))==NULL)
/*打开汉字库,该字库可以在ucdos中找到*/
{
printf("Can't open haz16,Please add it");
getch(); closegraph(); exit(0);
}
x=20; y=100; /*显示位置设置*/
while(*s)
{
qh=*(s)-0xa0; /*汉字区位码*/
wh=*(s+1)-0xa0;
offset=(94*(qh-1)+(wh-1))*32L;
/*计算该汉字在字库中偏移量*/
fseek(fp,offset,SEEK_SET);
fread(buffer,32,1,fp); /*取出汉字32字节的点阵字模存入buffer中(一个汉字)*/
for (i=0;i<16;i++)
/*将32位字节的点阵按位在屏幕上打印出来(1:打印,0:不打印),显示汉字*/
for(j=0;j<2;j++)
for(k=0;k<8;k++)
if (((buffer[i*2+j]>>(7-k))&0x1)!=NULL)
putpixel(x+8*j+k+m,y+i+n,4);
s+=2; /*因为一个汉字内码占用两个字节,所以s必须加2*/
x+=17;
}
scanf("%s",buffer);
printf("%s",buffer);
getch();
closegraph();
}