C语言判断汉字
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言判断汉字相关的知识,希望对你有一定的参考价值。
if(is_zh_ch(char p)!=0)
int is_zh_ch(char p)
if(~(p >> 8) == 0)
return 0;
return -1;
帮我解释下那个函数的实现 怎么回事情 要详细!
#include<stdio.h>
intmain()
inti;
unsignedchars[200];
scanf("%s",s);
for(i=0;s[i];i++)
if(s[i]>127)
printf("汉字");
i++;
elseprintf("字母");
return0;
扩展资料
C++利用汉字的ASCII编码小于0的特性判断汉字
//coding:utf-8
#include"stdio.h"
intmain()
constchar*str="ENG汉字测试ddd";
for(inti=0;str[i]!='\\0';i++)
charch=str[i];
if(ch<0)
printf("Y");
i=i+2;
else
printf("N");
//Output:NNNYYYYNNN
return0;
参考技术A 和文字表示方法有关。西文字符一个字节(char)就可以表示(ASCII码中包括了所有的西文字符),因为一个char只有8位,最多表示256个文字,因此而非西文字符的文字(UNICODE)全部用两个字节表示,机器内部的最小存储单位是字节,为了区分连续的两个char表示的是一个UNICODE还是两个西文字母,规定UNICODE码的两个字节的最高位都是1。if(~(p >> 8) == 0) return 0;的意思是,将char p的符号位(char为8位,即最高位)右移,若是UNICODE则p>>8后为1111 1111,然后按位取反为0
其实原理上面说过了,UNICODE码最高位为1,即符号位为1,上面的代码和下面的等价:
int is_zh_ch(char p)
if(p<0) return 0;
return -1;
参考技术B 判断输入的是中文还是英文很简单:
1、首先,要确认数据类型是字符型。
2、英文或一些特殊字符的ASCII码小于0x7f。
3、中文是以区位码形式出现的,ASCII码大于0xa0。
比如:
#include <stdio.h>
#include<string.h>
int main()
char* ss="hello世界";
int i;
while(*str)
if((unsigned)*str>=161) str+=2;i++;
else str++;
printf("Chinese char number is:%d\n",i);
return 0;
参考技术C p是ASCII码表示的啊,而英文的高8位全是0,汉字的高8位不为0,所以用>>右移判断 参考技术D for(i=0;i<l;i++)
if(s[i]<0)
o++
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语言判断汉字的主要内容,如果未能解决你的问题,请参考以下文章