c语言如何统计汉字个数

例如输入字符串“aa 字符串* bb”,如何统计里面的汉字个数,给个简单的代码谢谢
//这有一段代码刚找的,不懂的地方在注释标出//
#include<stdio.h>
int main()

{

int n;

int count;

char c;

scanf("%d%*c", &n);//*c 这里不懂什么意思

while (n--)

{

count = 0;

while ((c = getchar()) != '\n')

if (c < 0){

count++;

getchar();

}

printf("%d\n", count);

}

return 0;

}
//网上大神的一段代码,不知道他是怎样区分开其他字符只数汉字的//

C中的汉字用“机内码”,一个汉字两字节,最高位都是1,所以可以用下列代码求得一个字符串里汉字的个数:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void){
    char a[]="12我34们56都7是来自五a湖c四de海bfg";
    int i,sum;
    for(sum=i=0;a[i];i++)
        if(a[i]<0) sum++;//最高位为1(负数)的是一个汉字的一半
    printf("There are %d Chinese characters in this string.\n",sum/2);//输出汉字总数
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-14
楼主你好

具体代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 40
int main()
{
int i,count = 0;
char *cSource,*cSearch;
FILE *fp;
cSource = (char *)malloc(N * sizeof(char));
cSearch = (char *)malloc(3 * sizeof(char));
if((fp = fopen("word.txt", "r")) == NULL)
{
printf("文件打开失败!\n");
exit(0);
}
printf("输入统计的汉字:");
scanf("%s", cSearch);
fgets(cSource, N, fp);
for(i = 0; i < (int)strlen(cSource); i++)
{
if(cSource[i] == cSearch[0] && cSource[i+1] == cSearch[1])
//一个汉字占两个字节 所以需要判断两个字节的内容
count++;
}
printf("%d\n", count);
return 0;
}

如果word.txt中包含的内容为:你好吗 你 你

输入:你
输出:3

希望能帮助你哈追问

有点太复杂了 可以帮我先看看 我刚贴出的的那段代码吗 貌似很简单 运行没有错误 谢谢

本回答被提问者采纳
第2个回答  2015-09-25
受人以鱼不如受人以渔。这个问题解决了,还有其他问题怎么办?
给你推荐本书吧《C语言其实很简单》,新出版的书。重要的是后面有个“程序设计方法”索引,你这个问题后面一搜即得答案!以及你以后遇到的问题都可以这么解决,索引很全的!这个比较另类,一般的C语言书没有。
另外本书很适合初学,很接地气,很好玩很活泼又不失准确、知识点连贯。详细我不说了,自己网上搜。注意不是《C语言入门很简单》别看错
第3个回答  2019-01-29
#include<stdio.h>
#include<string.h>
int
main()
{

char
string[1000];
int
number=1;
printf("从键盘输入一行字符,以空格分割单词,直到按回车键结束,统计其中的单词个数\n");
gets(string);
int
i=1;

while(string[i]!='\0')
{
if(string[i]=='
')
number++;
i++;
}
printf("单词个数为:%d\n",number);
return
0;
}