如何在c语言的中文字符串中判断是否存在特定的汉字
#includestdio.h
#includestring.h
int main()
{char s[200],s1[3];
int i;
printf(“请输入一串汉字:”);
scanf(“%s”,s);
printf(“请输入要查找的一个汉字:”);
scanf(“%s”,s1);
for(i=0;istrlen(s);i+=2)
if(s[i]==s1[0]s[i+1]==s1[1])
{printf(“您输入的第%d个汉字是%sn”,i/2+1,s1);
break;
}
if(i=strlen(s))printf(“未找到!”);
return 0;
}
关于c语言中判断汉字的问题
这是跟汉字的存储方式有关,西文字符用ASCII码的话,一个字节可以表示一个字符,而汉字用的是双字节表示一个汉字。
那么,为了在机器内部区分ASCII码和汉字机内码,就规定汉字的两个字节的最高为都为1.
例如:汉字“啊”的汉字机内码为B0A1H
表示成双字节是这样的10110000
10100001
本程序用的就是判断最高位的方法。
int
is_zh_ch(char
p)
{
if(~(p
8)
==
0)
将p字节进行移位运算,右移8位,这样,如果移位后是0,则说明原来的字节最高位为0,不是1那么也就不是汉字的一个字节。
{
return
0;
//代表不是汉字
}
return
-1;
}
C语言中如何判断中文字符?
测试过了,你看看怎么样吧
#includestdio.h
int main(void)
{
char s[20];
int i,j;
char a,c[3];
FILE * fp;
scanf(“%s”,s);
fp=fopen(s,”r”);
if(!fp){
printf(“open errorn”);
return 1;
}
i=0;
c[2]=’