【c语言】使用char数组实现对中文汉字的处理 |
您所在的位置:网站首页 › 用数组存放字符串 › 【c语言】使用char数组实现对中文汉字的处理 |
前言:问题来源于我做哈夫曼编码和译码实训的时候,题目要求输入一段英文或中文。然后对其中的英文或中文进行检索,才能计算出相应的哈夫结点权值,构造哈夫曼树求哈夫曼编码。 对于中文的处理,头脑空白,只能想起一个char类型的变量无法存储中文汉字。然后我在查阅了许多对于c语言有关中文的文章之后,解决了把一个中文汉字当做变量来处理的问题。 我们可以先用strlen函数查看中文汉字占见个字节,(这里要注意不同字符集编码下的字节长度有所不同,包括英文字母,可以用strlen查看字节数) 我们可以发现,中文占两个字节,而char类型是一个字节长度的;因此,它的长度与char类型数据并不符合。这也就意味着我们不能像char类型一样简单操作中文字符。 问题总有解决的办法,像GB2312这些大多汉字编码,典型的用2个字节来表式大多数常用的中文汉字,最多可以表式65536个汉字,(同时:字符在数组中的存储是连续的) 所以我们可以用一个char数组实现对中文字符的操作,例如: 一、想要存入一个或多个中文: #include int main() { char ch[12]; //输入一个中文 scanf("%c%c",&ch[0],&ch[1]); printf("%c%c",ch[0],ch[1]); //输入一个中文 scanf("%c%c",&ch[2],&ch[3]); printf("%c%c",ch[2],ch[3]); //输入任意个中文(不超过数组长度-1,数组有一个结束符'\0') scanf("%s",ch); printf("%s",ch); return 0; } 二、对其中的一些中文取出: #include int main() { char ch[15]={"这里有七个中文"}; printf("char数组中第1个中文:\n"); printf("%c%c\n",ch[0],ch[1]); printf("char数组中第2个中文:\n"); printf("%c%c\n",ch[2],ch[3]); printf("全部中文:\n"); int j=1; for(int i=0;i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |