在C程序中处理汉字-C / C++-优质IT资源分享社区

admin
管理员
管理员
  • UID1
  • 粉丝32
  • 关注4
  • 发帖数581
  • 社区居民
  • 忠实会员
  • 原创写手
阅读:257回复:0

  在C程序中处理汉字

楼主#
更多 发布于:2016-05-21 23:02

学习过C言语的人或许有时会遇到这么一个疑问:如何用变量存储汉字以及对这些变量进行操作。现在许多C言语参阅书中都没涉及到这个疑问,程序中多为处理英文变量和英文字符串,涉及到汉字的状况也大都是在printf句子中输出提示信息或成果,如:

printf("请输入a,b的值:\n");

printf("输出功率为%s千瓦。

",power);

思考到还有适当一部分人在学习和使用C言语,因而在这里向读者介绍一下笔者在这方面探索出来的经历。

存储汉字应当用字符数组,这一点是必定的,关键疑问是汉字在你的计算机体系上占几个字节。多数人会以为一个汉字必定占两个字节,其实不然。汉字究竟占几个字节,这是随体系不一样而不一样的,而且还依赖于软件环境,如Visual

Basic中汉字占一个字节。能够在你的计算机上用strlen()函数测验一下,如:

printf("%d",strlen("计算机"));

若输出为6,则每个汉字占两个字节;若输出12,则每个汉字占四个字节。大多数体系是每个汉字占两个字节的,即上述句子输出值为6。应当留意的是一个全角字符(包含标点符号)同汉字占有一样的字节。这篇文章假定每个汉字占两个字节。

这么你就能够用字符数组存储汉字了,但别忘了,因为C言语中字符串是以'\0'作为完毕符号的,体系会主动加上这个符号符,而用strlen()函数测验的返回值不包含这个'\0',因而在界说和初始化字符数组时应当使数组长度最小为实践字符串长再加1,如:

static char name="孙悟空"; /*数组长度为7阐明最多可寄存3个汉字*/

假如把数组长度界说为6,体系在编译时并不报错,可是当运转程序时有时会不可思议地重复输出或多输出汉字,假如呈现这种状况,应当首先思考数组长度是不是有疑问。当然在界说的一起初始化能够省掉数组长度,如:

static char array[]={"我国计算机软件专业技术水平考试"};

同样能够界说二维数组,下面这个二维数组能够寄存10个人名:

char member; /*10个元素,每个元素中最多能放3个汉字(不是4个!)*/

因为二维数组member能够当作特别的一维数组member[0],member,…,member,这些一维数组分别表明各行,而一行就表明了一个人名,因而假如想操作每个人名,只需写成member[0],member,…而不写成member[0],member,…。

顺便提一下,在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; /*用来表明干支的字符变量*/

/*留意:下面两个句子中{}内的引号和逗号不能为全角字符*/

static char

tg={"甲","乙","丙","丁","戊","己","庚","辛","壬","癸"};

static char

dz={"子","丑","寅","卯","辰","巳","午","未","申","酉","戍","亥"};

printf("请输入一个年份:");

scanf("%d",&year);

a=(year-1804)%10; /*以1804年为参阅年份,1804年是甲子年*/

b=(year-1804)%12;

strcpy(gz,tg[a]);

strcat(gz,dz);

printf("%d年的干支为:%s\n",year,gz);

}

运转成果:

请输入一个年份:1999

1999年的干支为:己卯

优质IT资源分享社区[font=Tahoma  ]为你提供此文。[font=Tahoma  ]

[font=Tahoma  ]本站有大量优质C、C++教程视频,资料等资源,包含C,C++基础教程,高级进阶教程等等,教程视频资源涵盖传智播客,极客学院,达内,北大青鸟,猎豹网校等等IT职业培训机构的培训教学视频,价值巨大。欢迎点击下方链接查看。[font=Tahoma  ]

C、C++教程视频

优质IT资源分享社区(www.itziyuan.top)
一个免费,自由,开放,共享,平等,互助的优质IT资源分享网站。
专注免费分享各大IT培训机构最新培训教学视频,为你的IT学习助力!

!!!回帖受限制请看点击这里!!!
!!!资源失效请在此版块发帖说明!!!

[PS:按 CTRL+D收藏本站网址~]

——“优质IT资源分享社区”管理员专用签名~

本版相似帖子

游客