统计文本中的汉字个数

  • Post author:
  • Post category:其他


#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

void main()
{
    FILE *fp;                            //空的文件指针
    char path[100] = "c:\\1.txt";        //文件路径
    fp = fopen(path, "r");               //读的方式打开文件
    
    if (fp == NULL)
        perror("文件打开失败原因是:");      //输出错误原因

    int ich;                   //获取字符,fgetc的返回值是int,不用int,ASCII码没有问题,但是汉字会出问题
    //int占4个字节,用int才能存储汉字的编码,而char装不下
    int countEng=0;            //标记英文字符
    int countNum=0;            //标记数字
    int countChin=0;           //标记汉字

    while ((ich = fgetc(fp)) != EOF)
    {
        if ((ich >= 'A'&&ich <= 'Z') || (ich >= 'a'&&ich <= 'z'))
            countEng++;        //字母自增
        else if (ich >= '0'&&ich <= '9')
            countNum++;        //数字自增
        else if (ich > 128)    //判断双字节字符
        {
            //此处仅得到了双字节,还需要增加判断汉字的代码(GBK编码规范)
            ich = fgetc(fp);   //继续向前读一个字符
            countChin++;       //双字符自增
        }
    }

    printf("英文字符%d,  数字%d,  双字节字符%d\n", countEng, countNum, countChin);

    fclose(fp);
    system("pause");
}



版权声明:本文为weixin_45085228原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。