如何在C语言中输出中文!

Python015

如何在C语言中输出中文!,第1张

在C程序中显示汉字\x0d\x0a\x0d\x0a在许多C程序设计中,要用到汉字进行提示或人机交互,而现行的Turbo C集成开发环境不是汉化的,如何编制能显示汉字的C程序呢。\x0d\x0a\x0d\x0a下面的方法可以帮你在西文环境下显示汉字。这种方法是调用中文汉字库进行汉字显示。国家标准规定:汉字库分94个区,每个区有94个汉字(以位作区别),每个汉字在汉字库中有确定的区和位编号,这就是汉字的区位码。\x0d\x0a每个汉字在库中是以点阵字模形式存储的,一般采用16×16点阵(32字节)、24×24点阵(72字节),每个点用一个二进制位(0或1)表示,对应在屏幕上显示出来,就是相应的汉字。\x0d\x0a\x0d\x0a由于在中文环境下,输入的是汉字的内码,我们必须将之转换成区位码,算出偏移量,从字库中找到对应的汉字,将其字模显示即可。

FILE *PHZK16

/*

*HZK16字库初始化_打开字库

*/

void _InitHzk16()

{

PHZK16=fopen("Hzk16","rb")

if(!PHZK16){

printf("error in Hzk16,not exist\n")

system("pause")

exit(1)

}

}

/*

*取得字码

*/

void _GetHzk16Code(unsigned char code[],unsigned char bytes[])

{

unsigned char qh,wh

unsigned long offset

qh=code[0]-0xa0/*得到区号*/

wh=code[1]-0xa0/*得到位号*/

offset=(94*(qh-1)+(wh-1))*32L/*得到偏移位置*/

fseek(PHZK16,offset,SEEK_SET)/*移文件指针到要读取的汉字字模处*/

fread(bytes,32,1,PHZK16)/*读取32 个汉字的汉字字模*/

}

/******************************************************************************************************************/

/*下面这个代码 是C画图模式下可用*/

/*

*改变x、y(左上点)的位置,就可以实现文字的横向输出

*单个文字输出

*/

void _InputHzk16(int x,int y,unsigned char code[],int color)

{

int i,j,x0=0,y0=0

unsigned char s,mat[32]

_GetHzk16Code(code,mat)

for(i=0i<16i++){

s=mat[2*i]

x0=x+7

y0=y+i

while(s){

if(s%2){

putpixel(x0,y0,color)

}

s=s/2

x0--

}

s=mat[2*i+1]

x0=x+15

while(s){

if(s%2){

putpixel(x0,y0,color)

}

s=s/2

x0--

}

}

}