完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
前几天在写c语言代码进行文件读写的时候,在处理文件中的中文诗句的过程中发现了c语言txt文本文件的中文读取到char数组中的一些不同寻常之处,因此做一个总结。
c语言汉字的存储方式和特点 以下是一段c语言代码,比较中文存储和英文字符存储可以清晰看到c语言中,中文占2个字节,英文字母占1个字节 在文件读取的时候,utf-8ANSI编码的中文读入到字符串的结果是不一样的。 UTF-8 ANSI 因此utf-8和ansi以及unicode对于中文汉子的编码方式是一样的,众所周知英文字母都是Ascall编码,但是上面三种是不一样的。 Unicode是一种国际通用编码,可以包含世界上所有的符号,但是,对于存储带来一些问题,Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储,正如若每一个字符都占据4个字节,对于英文字母而言就造成了极大的浪费。 utf-8编码方式是一种使用最广泛的unicode编码的实现方式,UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。 一下是更具体的知识去讲解编码 编码知识 一般c语言处理汉字时候要留意txt中文件的保存类型,博主一般是保存为ansi,占据两个字节,因此读出文件的字符需要进行分割是也是按照两位两位的方式去分割,而且当使用中文字符进行匹配的时候需要使用strcmp函数去做,因为中文占据两个字节,英文占据一个可以直接==去判断。 以下是自己分割古诗的一个实例 使用char one[3]数组去保存每次生成的一个汉字,赋值到新的数组里面,然后进行strcmp匹配中文标点进行分割古诗。 以上是我写代码过程的一些经验,欢迎各位留言指导。 |
|
|
|
只有小组成员才能发言,加入小组>>
2597 浏览 0 评论
794浏览 1评论
239浏览 1评论
558浏览 0评论
305浏览 0评论
514浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-22 22:02 , Processed in 1.038969 second(s), Total 79, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号