如何用C语言输出中文?

老师要我用C语言输出自己的名字,但我不知道要怎么用C语言输出中文,请问各位,能帮我这个忙吗?
可以介绍资料,也可以写个程序在这
seesee2000:很感谢你的回答,我在C语言中调试了一下,发现文件“haz16”不能打开,在屏幕上显示"Can't open haz16,Please add it",请问该怎么办?你告诉我,在ucdoc中可以找到,但我对ucdos也不了解,直话告诉你,我全班同学没有一个知道的,望你帮帮忙,不知道你愿不愿意给我发邮件,如果可以,请发到threegn@126.com,谢谢!

在C程序中显示汉字

在许多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

程序例:

#include 〈graphics.h〉

#include 〈stdio.h〉

#include 〈fcntl.h〉

#include 〈io.h〉

#include 〈stdlib.h〉

#include 〈conio.h〉

#define ROW 1 //纵坐标放大倍数

#define COL 2 //横坐标放大倍数

void main()

{

int x,y;

char *s=〃汉字显示程序〃;

FILE *fp;

char buffer[32]; //buffer用来存储一个汉字

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)

//打开汉字库,该字库可以在ucdos中找到

{ printf(〃Can't open haz16,Please add it〃);

getch(); closegraph(); exit(0);

}

x=20; y=100; //显示位置设置

while(*s)

{ qh=*(s)-0xa0; //汉字区位码

wh=*(s+1)-0xa0;

offset=(94*(qh-1)+(wh-1))*32L; //计算该汉字在字库中偏移量

fseek(fp,offset,SEEK_SET);

fread(buffer,32,1,fp); //取出汉字32字节的点阵字模存入buffer中(一个汉字)

for (i=0;i〈16;i++) //将32位字节的点阵按位在屏幕上打印出来(1:打印,0:不打印),显示汉字

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))&0x1)!=NULL)

putpixel(x+8*j*COL+k*COL+m,y+i*ROW+n,GREEN);

s+=2; //因为一个汉字内码占用两个字节,所以s必须加2

x+=30;

}

getch();

closegraph();

}

上述程序在Turbo C 2.0编译系统下运行成功,它可以将汉字放大显示,读者可以将它改成函数用在您的程序中显示汉字。

参考资料:http://www.cqumzh.cn/topic_show.php?tid=28232

温馨提示:内容为网友见解,仅供参考
第1个回答  2005-11-03
"汉字"这样就表示字符串,系统对其处理和非汉字一样的。如果系统不支持中文输入的话,可以用编码代替。
汉字有两位2字节表示,1XXXXXXX1XXXXXXX
第2个回答  2005-11-06
下载个UCDOS然后从UCDOS再进C程序。

还有你老师一定是要求输入中文汉字?输入中文和学习C语言没关系的。估计你老是修斗了。
第3个回答  2005-11-03
下载个UCDOS然后从UCDOS再进C程序。

还有你老师一定是要求输入中文汉字?输入中文和学习C语言没关系的。估计你老是修斗了。
第4个回答  2005-11-03
支持汉字的系统(ucdos或者pdos95)本身就可以显示汉字的啊,如前几位所说printf("输入你要写的中文。");就可以了啊,如果在C环境下不好输入中文,可以用其它编辑软件写好程序再拿到Turbo C中编译运行了,万一还不行的话可以用整型数组来代替汉字,不过那就要去查字库了哦~~~四楼的大哥给出的程序很不错啊,不过我也很喜欢,有了这个程序,自己做产品时搞个中文显示界面不成问题了波~~~

如何在C语言中输出中文!
可以使用printf()、puts()等 函数 直接输出。include <stdio.h> include <locale.h> int main(){ const char str[] = "这里全是中文";printf("\\n输出字符数:%d\\n", printf(str));puts(str);return 0;} 2、单个中文字符,需要进行本地化设置,需要使用宽字符版的printf()即wprintf输出。i...

C语言printf怎么输出中文?
```c include int main(void) { char name[20];printf("请输入你的姓名:");scanf("%s", name);printf("你的姓名是:%s\\n", name);return 0;} ```

怎样用C语言编译出中文?
1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。2、在test.cpp文件中,输入C语言代码:char a[] = "中文";puts(a); 。3、编译器运行test.cpp文件,此时成功定义了中文并进行了输出。

请问在C语言中如何输出汉字?
1、引入标准输入输出库:sdtio.h。2、定义字符串形式的汉字(采用字符数组存储)。3、使用printf函数,或者puts函数输出字符串形式的汉字。例如:include<stdio.h>int main(){ char str[]="输出汉字"; printf("%s\\n",str); puts(str); return 0;}\/*运行结果:输出汉字输出汉字*\/ ...

C语言中文字符
在C语言中,如果输出中文字符,可以通过printf函数直接输出。printf函数在内部提供这种机制,实现宽字符的转换,因此都可以正常输出,比如:printf("中文测试\\n");另外也可以使用wprintf来输出存储在变量的中文字符,需要进行语言的区域设置。示例如下:示例如下,输出宽字符“中”字。include <stdio.h>#...

用C语言来随机输出一个中文你打英文!
scanf("%c", &flag);\/\/输入一个字母,如果字母是y则再生成一个单词让用户翻译 \/\/如果不是y,则退出程序 gechar();\/\/消除多余回车影响 } return 0;} --- 在你的C文件同目录下新建一个名为conect.txt的文本文件,内容如下 --- 是 yes 不是 no 真的 really 好 good 坏 bad ---...

C语言中一个字符用%c输出,那么一个中文字用什么输出?
用自符串: 先定义一个字符串,如:char hanzi[20]; 然后: scanf("%s",hanzi); 或者gets(hanzi); 不过定义的缉发光菏叱孤癸酞含喀时候控制了字节为20,不能输太多,(一个汉字两 个字节)。1、C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储...

c语言 如何达到输入一句中文输出指定的中文?
C语言中,汉字是用字符串来存储的,因为,汉字是多字节组成(GBK字符集一个汉字占两个字节,UTF8字符集,一个汉字占三个字节),所以,标准C中,只能用字符串来存储汉字数据。可以采用字符串输入函数来输入中文。判断中文是不是指定数据,可以用strcmp()函数来进行比较 中文输出,可用printf("%s")来...

c语言中如何同时输出汉子 数字
第一种方法:将汉字和数字全部作为字符输出。第二种方法:将汉字和数字分别输出,汉字作为字符。你的问题不太明白,不知道你的编译器是什么:如果是Win-TC,那么输出汉字就需要在变量定义之后,所有其他语句之前,加两条语句:system("graftabl 936");clrscr();这样就能输出中文。

C语言如何逆序输出一句中文的话
中文是双字节编码,要用 wchar。若是中文与英文混合码,则比较麻烦。若用 char ,全中文,可以尝试 双字节交换再输出。例如:int main( ){ char str[80]="尝试双字节交换再输出";char t1,t2;int L,i;L=strlen(str);for (i=0;i<L\/2;i=i+2){ t1=str[i];t2=str[i+1];str[i] =...

相似回答