想区分汉子与英文代码,首先,要知道汉字在内存占两个字节,而英文字码在内存占一个字节。而且,汉字的二进制代码的最高位都为 1,这样汉字对应的数字就是一个负数;所以可通过判断他是否小于零来区分其是否为汉字;最后,如果要统计一行字符串里有多少汉字,由于是两个字节存一个汉字,而数组的一个元素占一个字节,故得到的数再除以2就是汉字的个数。
例如:
输入一段字符串,统计其中汉字的个数:
#include<stdio.h>
#include<string.h>
int main()
{
char a[200];
int i,num,k,n;
scanf("%d\n",&n);
while(n--)
{
gets(a);
k=strlen(a);
for(i=0,num=0;i<=k;i++)
{if(a[i]<0) //判断是否小于零
num++; //统计汉字所占的字节数
}
printf("%d\n",num/2); //除以二得到汉字的个数
}
return 0;
}