#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 版权协议,转载请附上原文出处链接和本声明。