统计给定文本文件中汉字的个数
汉字机内码在计算机的表达方式的描述是,使用二个字节,每个字节最高位一位为1。
计算机中, 补码第一位是符号位, 1 表示为 负数,
所以 汉字机内码的每个字节表示的十进制数都是负数
统计输入字符串含有几个汉字,只只需求出字符串中小于0的字符有几个,将它除以2就
得到答案
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,T;int cnt;
char str[4096];
scanf("%d%*c",&T);
while(T--)
{
memset(str,0,sizeof(str));
cnt=0;i=0;
/*可能包含空格*/
//scanf("%[^\n]",str);,可能与编译器有关,用它就WA啦
gets(str);
// puts(str);
/*
int len=strlen(str);
printf("%d\n",len);
输入“我爱你”,输出6,所以最后需要除2
*/
/*
不是'\n' ,且根据while循环性质,自增需要写在循环内部
*/
while(str[i]!='\0')
{
if(str[i]<0)
cnt++;
i++;
}
printf("%d\n",cnt>>1);
}
return 0;
}
/*
注意:\n是换行
\0是终结字符,例如一个字符串的终结。 所以用gets读入字符串时
用 while(str[i]!='\0')结尾 ,而用ch=getchar()时,要用'\n'结尾
*/