[求助]为什么24点阵输出的字不是我输入的字呢?
<P>下面是我的原函数:<BR>#include<stdio.h><BR>#include<graphics.h></P><P>FILE *hzk_p;<BR>void open_hzk(void);<BR>void get_hz(char incode[],char bytes[]);<BR>void dishz(int x,int y,char code[],int color);<BR>main()<BR>{<BR> int x=20;<BR> int y=100;<BR> char *s="带综复何如,其路情为了。造化中神秀,因秧歌混淆。当胸生曾云,决自如归鸟。会当凌绝顶,一览众山小。"; /*这些是我要输出的字*/<BR> int driver=DETECT;<BR> int mode=0;<BR> initgraph(&driver,&mode,"");<BR> open_hzk();<BR> while(*s!=NULL){<BR> while(x<600 && (*s!=NULL)){<BR> dishz(x,y,s,YELLOW);<BR> x+=28;<BR> s+=2;<BR> }<BR> x=20;y+=28;<BR> }<BR> getch();<BR> fclose(hzk_p);<BR> closegraph();<BR>}</P>
<P>void open_hzk()<BR>{<BR> hzk_p=fopen("e:/edwin/hzk24k","rb"); /*我要用24点阵楷体*/<BR> if(!hzk_p){<BR> printf("HZK is not exist!\n");<BR> getch();<BR> closegraph();<BR> exit(1);<BR> }<BR>}</P>
<P>void get_hz(char incode[],char bytes[]) /*这个函数用来读取一个incode指向的汉字到bytes[]中*/<BR>{<BR> unsigned char qh,wh;<BR> unsigned long offset;<BR> qh=incode[0]-0xa0;<BR> wh=incode[1]-0xa0;<BR> offset=(94*(qh-1)+wh-1)*72L; /*汉字应该是分成94个区,每个区有94个汉字的吧,然后每个汉字要用72字节表示*/<BR> fseek(hzk_p,offset,SEEK_SET);<BR> fread(bytes,72,1,hzk_p);<BR>}</P>
<P>void dishz(int x0,int y0,char code[],int color) /*这个函数用来显示code指向的字*/<BR>{<BR> unsigned char mask[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};</P>
<P> int i,j,x,y,pos;<BR> char mat[72];<BR> get_hz(code,mat);<BR> x=x0;<BR> for(i=0;i<24;++i){<BR> y=y0;<BR> pos=3*i;<BR> for(j=0;j<24;j++){<BR> if((mask[j%8]&mat[pos+j/8])!=NULL)<BR> putpixel(x,y,color);<BR> ++y;<BR> }<BR> ++x;<BR> }<BR>}</P>
页:
[1]
