| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 8507 人关注过本帖
标题:将char型数组里的汉字识别出来,保存到另一个char型数组里,请教怎么实现?
取消只看楼主 加入收藏
andrewkewang
Rank: 2
等 级:论坛游民
帖 子: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
Rank: 2
等 级:论坛游民
帖 子:44
专家分:42
注 册:2013-11-22
收藏
得分: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
Rank: 2
等 级:论坛游民
帖 子:44
专家分:42
注 册:2013-11-22
收藏
得分:0 
回复 4楼 韶志
用你的程序试了试,虽然可以提取汉字了。
但是,我大概测试了几十个汉字,有一部分可以,有一部分就是一些乱码。
我想,这个条件“if(a[i]<0 || a[i]>255)”还是不太充分。
能给个更好的判断条件吗?
2013-11-23 17:06
andrewkewang
Rank: 2
等 级:论坛游民
帖 子:44
专家分:42
注 册:2013-11-22
收藏
得分:0 
回复 7楼 韶志
有可能是编译器的字符集不一样吗?我用的是VC++。
还是说跟具体的机器有关?
真不知道改怎么弄。继续研究ing......
还是谢谢啦,提供了一个思路。
2013-11-23 17:21
andrewkewang
Rank: 2
等 级:论坛游民
帖 子:44
专家分:42
注 册:2013-11-22
收藏
得分: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
快速回复:将char型数组里的汉字识别出来,保存到另一个char型数组里,请教怎么实 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015864 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved