好像有个wchar_t类型的,这里不深究了,只研究char型(1个字符大小)的

1.定义

直接使用char,但每个汉字占据2个字符,所以必须以字符串形式存在

char s[10];

2.定义时直接赋值

和基本类型相同,如 char s[10]="汉字"

3.输出

整个字符串输出

printf("%s",s);

cout<<s<<endl;

单个汉字字符输出

这里有点考究了

如果printf("%c",s[0]); 会输出一个问号

合适的方法应该是printf("%c%c",s[0][1]);

4.输入

整个字符串的输入

和之前一样使用 scanf("%s",s); cin>>s;

单个汉字字符的输入

这里的输入和以往的不同.

如果是scanf("%c",s[0]);  结果字符串相应的那个汉字会变成一个奇怪的其他字符,而不是自己输入那个字符

合适的方法应该是输入 scanf("%c%c",s[0],s[1]);

5.原因与分析

为什么会有这样的差别。自己推测原因如下(由于时间不充足就不做严格的证明了)

汉字的编码区中,存储单元上两个字节都是负数。所以系统在输出汉字字符串的时候先检测这个字节是否负数,如果是负数则要连同下一个字节,并合成一个有两字节长度的字符来输出,由此产生出了我们的汉字。那么输入的时候,则把用户输入的汉字,拆分为两个字符,然后分别放在参数列表指定的位置上,即例如到了 scanf("%c%c",s[0],s[1]);这个命令的时候,用户输入了一个“汉”字,然后“汉”拆分成了两个字符,第一个是“汉”的高八位,第二个是“汉”的低八位,然后分别放进了s[0]和s[1]中.

6.在代码中修改单个汉字

s[0]="中" 这种方法是显然行不通的,而对字符串又不能使用位移操作符来获取高八位低八位

最纠结的问题,搜寻许久无果,然后产生了原因分析,根据原因找到了改进的方法

使用strncpy()函数,头文件包含在string.h

例如要修改s中第一个字符

strncpy(s,"中",2); 这样就成功了

可以写一个宏定义函数

#define Chcpy(s,pos,t)  strncpy(s+pos,t,strlen(t))

s是被替换的字符串,pos是替换的起始位置,t是替换字符串

C 汉字处理的更多相关文章

  1. 结巴分词3--基于汉字成词能力的HMM模型识别未登录词

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 1 算法简介 在 结巴分词2--基于前缀词典及动态规划实现分词 博 ...

  2. .net汉字转字母

    目前手上有一个需要实现:将用户输入的姓名转换成汉语拼音. 使用枚举,既麻烦又易出错,发现有一个微软拼音转换工具类ChnCharInfo.dll,在此记录下: 首先需要引入此dll, 链接: http: ...

  3. STemwin汉字显示

    硬件环境: STM32F429,电容屏800X480 5点触控RGB屏幕 ,SPI flash: 软件环境: UCOSIII,STemwin: 汉字显示方法: 1.在SPIflash中装在字库XBF_ ...

  4. 【转载】C#怎么判断字符是不是汉字

    支持并尊重原创!原文地址:http://jingyan.baidu.com/article/2c8c281deb79ed0008252af1.html 判断一个字符是不是汉字通常有三种方法,第1种用 ...

  5. iOS 汉字的拼音

    获取汉字的拼音 #import <Foundation/Foundation.h> @interface NSString (Utils) /** * 汉字的拼音 * * @return ...

  6. Oracle汉字转拼音package

    --函数GetHzFullPY(string)用于获取汉字字符串的拼音 --select GetHzFullPY('中华人民共和国') from dual; --返回:ZhongHuaRenMinGo ...

  7. Linux C语言解析.bmp格式图片并显示汉字

    bmp.h 文件 #ifndef __BMP_H__ #define __BMP_H__ #include <unistd.h> #include <stdio.h> #inc ...

  8. [python]获取网页中内容为汉字的字符串的判断

    实际上是这样,将获取到网页中表单内容与汉字字符串作比较,即: a = request.POST['a'] if a == '博客园': print 'ok' else: print 'false' a ...

  9. [No000093]按住Alt 再按数字键敲出任意汉字和字符!

    1.在notepad里,(中文系统下) 按住Alt 然后按52946最后放开Alt 按住Alt 然后按45230最后放开Alt 按住Alt 然后按50403最后放开Alt 你会看到"我爱你& ...

  10. JavaScript 汉字与拼音互转终极方案 附JS拼音输入法

    转:http://www.codeceo.com/article/javascript-pinyin.html 前言 网上关于JS实现汉字和拼音互转的文章很多,但是比较杂乱,都是互相抄来抄去,而且有的 ...

随机推荐

  1. 14、AppWidget及Launcher RemoteViews

    一.Launcher的简单研究 1 什么是Launcher Android系统启动后加载的第一个程序 . 这个程序是其他应用程序的入口 . Launcher构成: HomeScreen : (Work ...

  2. python 基础 7.6 sys 模块

    一.sys 模块 sys 模块主要功能是获取参数     [root@www pythonscripts]# cat 2.py #!/usr/bin/python #coding=utf-8   im ...

  3. ast.literal_eval(jsonStr) json格式字符串转dict 2种方式

    json.loads(jsonStr, encoding='utf-8')import ast ast.literal_eval(jsonStr)

  4. 使用cocos2d-js-3.0RC1中的物理引擎chipmunk模拟的“别碰钉子”源码分享(含碰撞检测)

    分别用box2d和chipmunk实现了一下,不过box2d没整理,也懒得整理了.chipmunk整理了一下,分享给大家吧. 刚开始研究,抛砖引玉 简要说明:1.初始化物理环境,增加边界 initPh ...

  5. 前端mvc组合框架

    1. jquery 2. underscore 3. backbone 4. reactjs 5. seajs

  6. 【题解】CF1103D Professional layer

    [题解]CF1103DProfessional layer 神题做前先\(orzyyb\) 一个很好的性质(之前也见过但是没有想到的) zhengchu \(gcd\le 10^{12}\) 所以不同 ...

  7. (转)javascript中call()、apply()、bind()的用法

    其实是一个很简单的东西,认真看十分钟就从一脸懵B 到完全 理解! 先看明白下面: 例1 obj.objAge;  //17 obj.myFun()  //小张年龄undefined 例2 shows( ...

  8. 爬虫前戏(回顾掌握) -- HTTP和HTTPS

    一.HTTP协议 1.官方概念: HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文 ...

  9. wampserver发布详解

    以下为wampserver发布php并绑定域名的操作 1 在“httpd.conf”文件中查找:Include conf/extra/httpd-vhosts.conf,去掉前面的注释# 2 打开ap ...

  10. 笔记 jsp/ajax/js/jquery/html5/css+div->table

    1. jsp 1).jsp(39,33)   equal symbol expected: 这个异常是说第39行有 " '( 冒号单引号)问题 2)${map[key]}  map和key换 ...