如何在C程式中处理汉字
2008-02-23 05:29:10来源:互联网 阅读 ()
这些变量进行操作。现在许多C语言参考书中都没涉及到这个问题,程式中多为处
理英文变量和英文字符串,涉及到汉字的情况也大都是在printf语句中输出提示
信息或结果,如:
printf("请输入a,b的值:\n");
printf("输出功率为%s千瓦。\n",power);
考虑到更有相当一部分人在学习和应用C语言,因此在这里向读者介绍一下笔
者在这方面摸索出来的经验。
存储汉字应该用字符数组,这一点是肯定的,关键问题是汉字在您的电脑
系统上占几个字节。多数人会认为一个汉字肯定占两个字节,其实不然。汉字到
底占几个字节,这是随系统不同而不同的,而且还依赖于软件环境,如Visual
Basic中汉字占一个字节。能够在您的电脑上用strlen()函数测试一下,如:
printf("%d",strlen("电脑"));
若输出为6,则每个汉字占两个字节;若输出12,则每个汉字占四个字节。大
多数系统是每个汉字占两个字节的,即上述语句输出值为6。应当注意的是个全
角字符(包括标点符号)同汉字占据相同的字节。本文假定每个汉字占两个字节。
这样您就能够用字符数组存储汉字了,但别忘了,由于C语言中字符串是以
'\0'作为结束标记的,系统会自动加上这个标记符,而用strlen()函数测试的返
回值不包括这个'\0',因此在定义和初始化字符数组时应当使数组长度最小为实际
字符串长再加1,如:
static char name[7]="孙悟空"; /*数组长度为7说明最多可存放3个汉字*/
假如把数组长度定义为6,系统在编译时并不报错,但是当运行程式时有时会
莫名其妙地重复输出或多输出汉字,假如出现这种情况,应当首先考虑数组长度
是否有问题。当然在定义的同时初始化能够省略数组长度,如:
static char array[]={"中国电脑软件专业技术水平考试"};
同样能够定义二维数组,下面这个二维数组能够存放10个人名:
char member[10][8]; /*10个元素,每个元素中最多能放3个汉字(不是4个!)*/
因为二维数组member[10][8]能够看成特别的一维数组member[0],member[1],
…,member[9],这些一维数组分别表示各行,而一行就表示了一个人名,因此如
果想操作每个人名,只需写成member[0],member[1],…而不写成member[0][8],
member[1][8],…。
顺便提一下,在C编译窗口中输入汉字需要中文环境。假如读者用的是DOS操
作系统,那么就需要安装CCDOS或UCDOS;假如是WIN95/98操作系统,则在DOS命令
窗口中运行下面这个批处理文档即可,而不必另外安装中文DOS系统:
C:\WINDOWS>PDOS95
在C编辑窗口中用Ctrl 空格键启动WIN95中文输入法。另外由于C程式是基于
DOS的,因此编辑、编译C程式最好在全屏幕状态,否则容易出现问题。
下面给出一个实例程式,他的功能是计算出输入年份的天干地支。
#include "string.h"
main()
{
int a,b,year;
char gz[6]; /*用来表示干支的字符变量*/
/*注意:下面两个语句中{}内的引号和逗号不能为全角字符*/
static char tg[10][3]={"甲","乙","丙","丁","戊","己","庚","辛","壬","癸"};
static char dz[12][3]={"子","丑","寅","卯","辰","巳","午","未","申","酉","戍","亥"};
printf("请输入一个年份:");
scanf("%d",&year);
a=(year-1804); /*以1804年为参考年份,1804年是甲子年*/
b=(year-1804);
strcpy(gz,tg[a]);
strcat(gz,dz);
printf("%d年的干支为:%s\n",year,gz);
}
运行结果:
请输入一个年份:1999
1999年的干支为:己卯
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇: C 语言的常见各种问题
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash