我这个打印24 * 24点阵的汉字程序为什么有问题

打印的汉字不是应该打印的
字库文件自己下一个
#include<stdio.h>
#include<graphics.h>
#include<assert.h>

void initgr(void); /* BGI初始化 */
void OpenHzk();/*打开字库文件*/
void GetHz(unsigned char incode[],unsigned char qwcode[]);/*获得内码的区位码*/
/*模拟画点*/
void PrintHz(unsigned char qwcode[],int x0, int y0, int color);/*根据区位码模拟画点*/

FILE* pFileHzk=NULL;
int main()
{

unsigned char *pStr = "星";
unsigned char qwcode[72];
int x=50,y=50;

initgr();
OpenHzk();

GetHz(pStr, qwcode);
PrintHz(qwcode,x,y,YELLOW);

getch();
fclose(pFileHzk);
closegraph();

return 1;
}

void PrintHz(unsigned char qwcode[],int x0, int y0, int color)
{
register int i,j,x,y,pos;
static unsigned char mask[] = {0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
x = x0;
for(i=0; i<24; i++)
{
y = y0;
pos = 3 * i;
for(j=0; j<24; j++)
{
if( (mask[j%8] & qwcode[pos + j / 8]) != 0)
putpixel(x,y,color);
y++;
}
x++;
}
}

void GetHz(unsigned char incode[], unsigned char qwcode[])
{
unsigned char qh = incode[0] - 0xa0;
unsigned char wh = incode[1] - 0xa0;
unsigned long offset= (94 * (qh - 1) + (wh - 1) ) *72L;
fseek(pFileHzk,offset,SEEK_SET);
fread(qwcode,72,1,pFileHzk);

return;
}

void initgr(void) /* BGI初始化 */
{
int gd = DETECT, gm = 0; /* 和gd = VGA,gm = VGAHI是同样效果 */
registerbgidriver(EGAVGA_driver);/* 注册BGI驱动后可以不需要.BGI文件的支持运行 */
initgraph(&gd, &gm, "c:\\win-tc\\projects");
}
void OpenHzk()
{

pFileHzk = fopen("c:\\win-tc\\ccdos\\hzk24s","rb");
if(NULL == pFileHzk)
{
printf("the file HZK16 not exit ! Enter to exit \n");
system("pause");
closegraph();
exit(1);
}
return;
}

[2012 byte] By [AAdai] at [2008-1-9]