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;
}
楼主你好
具体代码如下:
#include
#include
#include
#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
希望能帮助你哈
受人以鱼不如受人以渔。这个问题解决了,还有其他问题怎么办?
给你推荐本书吧《C语言其实很简单》,新出版的书。重要的是后面有个“程序设计方法”索引,你这个问题后面一搜即得答案!以及你以后遇到的问题都可以这么解决,索引很全的!这个比较另类,一般的C语言书没有。
另外本书很适合初学,很接地气,很好玩很活泼又不失准确、知识点连贯。详细我不说了,自己网上搜。注意不是《C语言入门很简单》别看错
#include
#include
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;
}