当前位置: 代码迷 >> C语言 >> 如何在C中显示汉语???
  详细解决方案

如何在C中显示汉语???

热度:248   发布时间:2007-02-27 00:19:57.0
去载一个wintc
选择“超级工具集”->“点阵字模工具”,好好看一下就应当有所收获。

----------------解决方案--------------------------------------------------------

如何在纯c语言中显示汉字(含源代码)

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <io.h>
/*************************************************************************************
  在许多C程序设计中,要用到汉字进行提示或人机交互,而现行的Turbo C集成开发环境不是汉化的,

如何编制能显示汉字的C程序呢?

  下面的方法可以帮你在西文环境下显示汉字。这种方法是调用中文汉字库进行汉字显示。

国家标准规定:汉字库分94个区,每个区有94个汉字(以位作区别),每个汉字在汉字库中

有确定的区和位编号,这就是汉字的区位码。每个汉字在库中是以点阵字模形式存储的,

一般采用16×16点阵(32字节)、24×24点阵(72字节),每个点用一个二进制位(0或1)

表示,对应在屏幕上显示出来,就是相应的汉字。

  由于在中文环境下,输入的是汉字的内码,我们必须将之转换成区位码,算出偏移量,

从字库中找到对应的汉字,将其字模显示即可。

  内码转换成区位码方法如下:

   qh=c1-0xa0 wh=c2-0xa0

  其区位码就是:

    qw=qh*0xff+wh

  该汉字在字库中离起点的位置是:

     offset=(94*(qh-1)+(wh-1))*32L
*************************************************************************************/

void main()
{
int x,y ;
char *s="汉字显示程序";
int ROW = 2 ;
int COL = 2 ;
FILE *fp;
char buffer[32];
register m,n,i,j,k;
unsigned char qh , wh ;
unsigned long offset ;
int gd=DETECT,gm;
initgraph(&gd,&gm,"");

if((fp=fopen("HZK16","rb"))==NULL)
{
printf("Can not Open Hzk16,Please add it");
getch();
closegraph();
exit(0);
}
x = 20 ; y = 100 ;
while(*s)
{
qh=*s - 0xaf ; /* 此处-0xaf是因为该处是18030汉字库 ,如果是ucdos字库或者2312字库则用-0xa0 */
wh=*(s + 1) -0xa0 ;
offset=(94 * (qh-1 ) + ( wh - 1 ) ) * 32L ;
fseek(fp,offset,SEEK_SET);
fread(buffer , 32 , 1 , fp ) ;
for( i = 0 ; i < 16 ; i++ )
for(n = 0 ; n < ROW ; n++)
for(j = 0 ; j < 2 ; j++ )
for(k = 0 ; k < 8 ; k++)
for(m = 0 ; m < COL ; m++)
if(((buffer[i*2+j] >> ( 7 - k )) & 0x01 ) != NULL )
putpixel(x + 8* j * COL + k * COL + m ,y + i * ROW + n ,GREEN ) ;
s += 2 ;
x += 30 ;
}
getch() ;
getch() ;
getch();
closegraph() ;

}


----------------解决方案--------------------------------------------------------
请2楼注意:汉化版不能直接输出中文,因为汉化版只是仅仅汉化界面
----------------解决方案--------------------------------------------------------

我给你个下载地址 你去下载就OK
http://www.bc-cn.net/Soft/kfyy/c/200409/3


----------------解决方案--------------------------------------------------------
他C是ASCII编码

----------------解决方案--------------------------------------------------------
TC2.0 也行哇,但需挂接汉字系统比如天汇、UCDOS、CCDOS等

winTC直接在WINDOWS下运行省事方便
----------------解决方案--------------------------------------------------------

请教字模的安装方法,我试了好多次,都没弄好


----------------解决方案--------------------------------------------------------
谢谢楼上的各位兄弟,虽然我还是没能显示出来汉字,但是我知道我差在哪儿了。我得去补习基础知识了。。。谢谢
----------------解决方案--------------------------------------------------------
  相关解决方案