|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 将char型数组里的汉字识别出来,保存到另一个char型数组里,请教怎么实现?
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
8507
人关注过本帖
标题:
将char型数组里的汉字识别出来,保存到另一个char型数组里,请教怎么实现?
取消只看楼主
加入收藏
andrewkewang
等 级:
论坛游民
帖 子:44
专家分:42
注 册:2013-11-22
结帖率:
88.89%
楼主
收藏
已结贴
√
问题点数:20 回复次数:4
将char型数组里的汉字识别出来,保存到另一个char型数组里,请教怎么实现?
现在有这样一个char型的数组:
char buf[] = "张三 (1,2)"
或者
char buf[] = "(1,2) 张三"
(数组里面只会出现“汉字”,“阿拉伯数字”,“逗号”,“圆括号”这四种类型的数据)
怎么把buf数组里的汉字单独提取出来,存储到另外一个char buf2[]数组里,
最后让buf2[] = "张三" 呢?
(一个汉字占两个字节,这个弄起来挺麻烦的。)
搜索更多相关主题的帖子:
阿拉伯
汉字
2013-11-23 14:39
举报帖子
使用道具
赠送鲜花
andrewkewang
等 级:
论坛游民
帖 子:44
专家分:42
注 册:2013-11-22
第
2
楼
收藏
得分:0
回复 2楼 303770957
“数字字符和汉字的unicode的值的范围不一样的”
具体的,他们的范围是多少?
知道范围后,是可以像下面这样操作吗?
for(i = 0; i < len; i++)//len是buf[]数组的长度
{
if(buf[i]的值在数字字符的范围中)
则,赋给一个int型变量
if(buf[i]的值在标点符号的范围中)
则,赋给一个char型变量
if(buf[i]的值在汉字的范围中)
则,赋给buf2[]
}
但问题是汉字占两个字节,知道范围后,又要具体怎么比较啊?
不知道我这个思路想的对不对。
总之,我想要把char buf[]里的汉字提取到另一个char buf2[]数组里。
对于字符串的处理,我还不太熟练,可以的话,给个代码最好。
2013-11-23 16:29
举报帖子
使用道具
赠送鲜花
andrewkewang
等 级:
论坛游民
帖 子:44
专家分:42
注 册:2013-11-22
第
3
楼
收藏
得分:0
回复 4楼 韶志
用你的程序试了试,虽然可以提取汉字了。
但是,我大概测试了几十个汉字,有一部分可以,有一部分就是一些乱码。
我想,这个条件“if(a[i]<0 || a[i]>255)”还是不太充分。
能给个更好的判断条件吗?
2013-11-23 17:06
举报帖子
使用道具
赠送鲜花
andrewkewang
等 级:
论坛游民
帖 子:44
专家分:42
注 册:2013-11-22
第
4
楼
收藏
得分:0
回复 7楼 韶志
有可能是编译器的字符集不一样吗?我用的是VC++。
还是说跟具体的机器有关?
真不知道改怎么弄。继续研究ing......
还是谢谢啦,提供了一个思路。
2013-11-23 17:21
举报帖子
使用道具
赠送鲜花
andrewkewang
等 级:
论坛游民
帖 子:44
专家分:42
注 册:2013-11-22
第
5
楼
收藏
得分:0
问题弄出来了,分享一下。不过肯定不是最好的办法。
由于我的txt文件里的字符类型只有四种(逗号,左右圆括号,阿拉伯数字,和汉字),所以可以用下面的办法。
问了问别人,ta给了这么一段代码:
char *str = "张三";
for (char *p = str; *p;++p)
{
printf("%d\n", *p);
}
上面这段代码可以获取出字符的ASCII值。
我获取出“田”字的ASCII,是-109和99。所以,如果取小于0,大于255的范围,就没办法识别“田”字了。
不过我的txt文档里面只有逗号,左右圆括号,阿拉伯数字,和汉字。
这样就可以通过排除另外三种数据类型来识别汉字了。
逗号的ASCII值是44,0-9的是48-57,左括号的是40,右括号的是41。
那么可以这样:
if (buf[i] != 44 && buf[i] != 40 && buf[i] != 41)
{
if (buf[i] < 48 || buf[i] > 57)
{
处理;//参考四楼的代码
}
}
有高手有更好的办法的话,可以大家继续探讨一下。
2013-11-24 10:46
举报帖子
使用道具
赠送鲜花
5
1/1页
1
快速回复:
将char型数组里的汉字识别出来,保存到另一个char型数组里,请教怎么实 ...
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.017517 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved