c语言中怎样判断一行中是不是有汉字
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中怎样判断一行中是不是有汉字相关的知识,希望对你有一定的参考价值。
参考技术A 中文采用UTF8,GB2312编码的,有两个字节判断是不是该字符小于0即可
正常的字符都是0~127的,中文的编码特殊,超过这个范围了,基本上都为负值
int i;
for(i=0;i<strlen(p);i++)
if((int)p[i] <0)
printf("there is chinese character!\n");
break;
追问
if ((-1 == flag) && (CH_FLAG == ((str[i] >> 4) & 0xf)))
flag = 0; //有汉字
CH_FLAG 是啥?
看样子,跟我判断的大概是一个意思
CH_FLAG =0xe。你把邮箱发给我,我给你完整的程序和说明
追答不用了
if ((-1 == flag) && (CH_FLAG == ((str[i] >> 4) & 0xf)))flag = 0; //有汉字
flag是表示是否汉字的标志,为-1表示没有置过标志,
(str[i] >> 4) & 0xf
跟你说了,一个汉字两个字节,这里右移4位,是为了每4位判断一下,如果与的结果为0xe 即二进制1110 ,高几位全是1,就是汉字了,这个是根据汉字的编码范围确定的
如果你仍不懂,加我hi吧,晚上聊,呵呵
看来你是初学,讲不明白呀:)
一个有数字和汉字组成的字符串(数字位于汉字的左端或右端,如“1汉字”),怎样跳过数字,只取汉字
参考技术B 楼上说的对,可以用处理英文的手法:例如:
#include <string.h>
...
if(strcmp(str,"是")==0) ...;//假设输入的中文字符串在str里,和“是”比较是否一样
另外,团IDC网上有许多产品团购,便宜有口碑本回答被提问者采纳 参考技术C 要看字符编码格式。
然后根据ASCII 码表
C++里怎样判断字符串中含有汉字
//返回0:无中文,返回1:有中文int IncludeChinese(char *str)
int nRet = 0;
char c;
while(c=*str++)
//如果字符高位为1且下一字符高位也是1则有中文字符
if( (c&0x80) && (*str & 0x80) )
nRet = 1;
break;
return nRet;
参考技术A 用正则表达式,对应的库,有BOOST,还有C++11都有
以上是关于c语言中怎样判断一行中是不是有汉字的主要内容,如果未能解决你的问题,请参考以下文章