#include<stdio.h>
intmain()
{inti
unsignedchars[200]
scanf("%s",s)
for(i=0s[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=0str[i]!='\0'i++)
{
charch=str[i]
if(ch<0)
{
printf("Y")
i=i+2
}
else
{
printf("N")
}
}
//Output:NNNYYYYNNN
return0
}
汉字用两个字节编码,且机内码的每字节最高位都是1。所以对于含有汉字的字符串a,可以用if(a[i]&0x80 &&a[i+1]&0x80)来判断,若()内为真则为汉字,否则不是。测试过了,你看看怎么样吧#include<stdio.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 error\n")
return 1
}
i=0
c[2]='\0'
while((a=fgetc(fp))!=EOF){
if(a&0x80){
c[i]=a
i++
if(i==2){
printf("%s 是汉字\n",c)
i=0
}
}
else i=0
}
getchar()
getchar()
return 0
}