已知文件 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);
}