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语言中怎样判断一行中是不是有汉字的主要内容,如果未能解决你的问题,请参考以下文章

c语言如何判断输入的字符串是不是有汉字

C++里怎样判断字符串中含有汉字

C语言中,怎样判断一个数组中是不是有重复元素呢?最好用程序实现

怎样判断一个字符是否汉字呢??

C语言判断汉字

C语言中怎样判断某个特定的程序是不是正在运行(Windows)