资源描述:
《从HZK16中读取汉字的c语言源代码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#include#include///////////////////////////////////////////////////////////////////*从字库中读取对应文字*/voidRead(FILE*HZK,unsignedchar*chinese,char**mat){unsignedcharqh,wh;if((HZK=fopen("HZK16","rb"))==NULL)printf("文件不存在或不能读!");qh=chinese[0]-0xa0;wh=chinese[1]-0xa0;//获得区码与位码fseek
2、(HZK,(94*(qh-1)+(wh-1))*32l,SEEK_SET);fread(mat,32,1,HZK);fclose(HZK);}/*把二进制的mat数组转变成字符change数组*/voidchange(charmat[][2],char**array,intm,intn){inti,j,k,l=0;for(i=0;i<16;i++){for(j=0;j<2;j++){for(k=0;k<8;k++){if(mat[i][j]&(0x80>>k))//提出每个字节的0和1的状态{*((char*)array+n*i+l)='#';l++;}else{*((cha
3、r*)array+n*i+l)='-';l++;}}}l=0;}return;}/*输出函数*/voidPrint(chararray[][16]){inti,j;for(i=0;i<16;i++){for(j=0;j<16;j++){printf("%c",array[i][j]);}printf("");}}/*旋转函数*/intrevolve(chararray[][16],char**narray,intm,intn,intangle){inti,j;for(i=0;i<16;i++){for(j=0;j<16;j++){if(((angle-90)%360==0
4、)
5、
6、((angle+270)%360==0))*((char*)narray+n*i+j)=array[j][15-i];elseif(((angle+90)%360==0)
7、
8、((angle-270)%360==0))*((char*)narray+n*i+j)=array[15-j][15-i];elseif(((angle-180)%360==0)
9、
10、((angle+180)%360==0))*((char*)narray+n*i+j)=array[15-i][j];elseif(angle%360==0)*((char*)narray+n*i+j)=array[i]
11、[j];elsereturn0;}}return1;}/*翻转函数*/intturnover(chararray[][16],char**narray,intm,intn,inttag){inti,j;for(i=0;i<16;i++){for(j=0;j<16;j++){if(tag==0)*((char*)narray+n*i+j)=array[i][15-j];//左右翻转elseif(tag==1)*((char*)narray+n*i+j)=array[15-i][j];//上下翻转elsereturn0;}}return1;}/*放大函数的辅助,提取0、1状态*/
12、voidgetFontInfo(char*mat,introw,intcolumn,int&phasInfo){if(mat[2*row+column/8]&(0x80>>(column%8))){phasInfo=1;}else{phasInfo=0;}}/*放大函数*/voidmagnify(char*mat,intmultiple){inti,j,k,r;intphasInfo;for(i=0;i<16;i++){for(k=0;k13、;r