问个Char中英文结合的问题
本帖最后由 yeakon 于 2013-08-30 19:01:25 编辑
int charOffse;
char buf[100];
memset(buf,0x20,100);
//首先有一个char指针数组来保存用户输入的字符
//现在char这个数组里面是中英文结合,现在要加一个功能
//功能为,用户按一下删除键,删除一个字符,这个字符可以是中文也可以是英文
//按我的理解,中文就删掉两个char,英文就删掉一个char
//charOffse永远是在指针末尾的
//我实现如下
if(buf[charOffset]<0x80)
{
//中文的十六进制后面两个字节会大于0X80的如果小于0x80则为一个中文字符
memset(buf+charOffse,0x20,1);
charOffse--;
}
else
{
//是中文就清空两个字符
memset(buf+charOffse-1,0x20,2);
charOffse-=2;
}
上面是我的方法但是删除会出错,我不确定是不是计算小于0x80的,我只是记得好像是这样的。
如果不对,请指正,和指导一下,谢谢各位了 c
[解决办法]
应该和无符号有无符号没有关系吧?
如果字符高位为1且下一字符高位也是1则有中文字符
if((buf[charOffset]&0x80) && (buf[charOffset+1]&0x80))
{
// 为中文
}
楼主可以参考这个