已知文件 a.txt 存储若干文本数据,编程统计 a.txt 文件的行数、大写字母个数、小写字母个数、数字字符个数及其他字符的个数。

已知文件 a.txt 存储若干文本数据,编程统计 a.txt 文件的行数、大写字母个数、小写字母个数、数字字符个数及其他字符的个数。要求如下:
① 定义 countFile()函数:统计文本文件的行数、大写字母个数、小写字母个数、数字字符个数及其他字符的个数。
② 定义 main()函数:打开 a.txt 文件,调用 countFile()函数统计文本文件的行数、大写字母个数、小写字母个数、数字字符个数及其他字符的个数,输出统计结果


#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
void counFile(const char *buff);
int main()
{
    FILE *fp=fopen("a.txt","rb");
    if(fp==NULL)
    {
        return 0;
    }
    /*获取文件状态信息*/
    struct stat statbuf;
    stat("a.txt", &statbuf);
    char *data=malloc(statbuf.st_size);//动态分配空间,用来存储读取的文件内容
    fread(data,statbuf.st_size,1,fp);//读取文件内容
    fclose(fp);//关闭文件
    counFile(data);//统计文件信息
    free(data);//释放空间
}
void counFile(const char *buff)
{
    int line=0,count_A=0,count_a=0,count_number=0,count=0;
    while(*buff)
    {
        if(*buff>='a' && *buff<='z')
        {
            count_a++;
        }
        else if(*buff>='A' && *buff>='Z')
        {
            count_A++;
        }
        else if(*buff>='0' && *buff<='9')
        {
            count_number++;
        }
        else if(*buff=='\n')
        {
            line++;
            count++;
        }
        else 
        {
            count++;
        }    
        buff++;
    }
    printf("行数:%d\n",line);
    printf("大写字母:%d\n",count_A);
    printf("小写字母:%d\n",count_a);
    printf("数字:%d\n",count_number);
    printf("其它字符:%d\n",count);
}