【c语言】使用char数组实现对中文汉字的处理

您所在的位置:网站首页 用数组存放字符串 【c语言】使用char数组实现对中文汉字的处理

【c语言】使用char数组实现对中文汉字的处理

2023-08-25 11:56| 来源: 网络整理| 查看: 265

        前言:问题来源于我做哈夫曼编码和译码实训的时候,题目要求输入一段英文或中文。然后对其中的英文或中文进行检索,才能计算出相应的哈夫结点权值,构造哈夫曼树求哈夫曼编码。

        对于中文的处理,头脑空白,只能想起一个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