没有合适的资源?快使用搜索试试~ 我知道了~
在c程序中处理汉字在c程序中处理汉字在c程序中处理汉字
资源推荐
资源详情
资源评论
学习过c语言的人也许有时会遇到这样一个问题:如何用变量存储汉字以及对这些变量进行操作。目前许多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说明最多可存放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
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说明最多可存放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
资源评论
普通网友
- 粉丝: 1
- 资源: 101
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- mmqrcode1714153659780.png
- Screenshot_2024-04-27-06-08-58-486_com.baidu.xin.aiqicha.jpg
- 基于Javaweb+Tomcat+MySQL的大学生公寓管理系统+sql文件.zip
- 实训作业基于javaweb的订单管理系统源码+数据库+实训报告.zip
- 多机调度问题贪心算法基于最小堆和贪心算法求解多机调度问题.zip
- 基于同态加密技术的匿名电子投票系统源码.zip
- Pyqt5项目框架-PyQt项目开发实践
- 基于C通过MQTT的智能农业大棚管理系统(本科毕业设计)
- python+CNN的网络入侵检测算法源码.zip
- js 实现记住密码功能 js.cookie.min.js
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功