请编程实现读取并统计文本文件“ex802.txt”中字母、数字和其它字符的个数,然后将统计结果输出到屏幕。注:该文本文件与源码文件保存在同一个文件夹中。 目前已完成main函数的编写,请编程实现statisticsFromFile函数,函数的功能和要求如下所示。 /* @Filename: ex802.c @Author: Ju Chengdong @Version: 1.0 @Date: 2021-03-18 @Description: File Character Statistics */ #include<stdio.h> #include <stdlib.h> #include <string.h> int main(void){ int statisticsFromFile(int *num, char *fileName, char *mode); /* * 定义数组num,包含三个元素: * 第1个元素表示字母个数; * 第2个元素表示数字个数; * 第3个元素表示其他字符个数 */ int num[3]={0,0,0}; char fileName[] = "ex802.txt"; /*读取文件并分类统计字符个数*/ statisticsFromFile(num, fileName, "r"); /*输出显示各类字符个数*/ printf("letter:%d\n",num[0]); printf("number:%d\n",num[1]); printf("other:%d",num[2]); return 0; } /* * 函数名称:statisticsFromFile * 函数功能:读取文件并分类统计字符个数,统计结果保存在形参数组num中 * 形式参数:int *,一维整型数组首地址 * 形式参数:char *fileName,文件路径及名称 * 形式参数:char *mode,文件使用方式 * 返 回 值:int型,若文件打开异常,返回 -1;否则返回读取文件的字符数 */ int statisticsFromFile(int *num, char *fileName, char *mode){ // 请编程实现本函数 }
时间: 2023-08-02 18:06:14 浏览: 56
编写一个程序统计文本文件英文字母个数,不区分大小写,屏幕输出每个字母出现的次数。
4星 · 用户满意度95%
以下是实现statisticsFromFile函数的代码:
```
int statisticsFromFile(int *num, char *fileName, char *mode){
FILE *fp; // 文件指针
char ch; // 存放读取的字符
int count = 0; // 统计字符数
fp = fopen(fileName, mode); // 打开文件
if(fp == NULL){ // 判断文件是否打开成功
printf("File open failed!\n");
return -1;
}
while((ch = fgetc(fp)) != EOF){ // 逐个字符读取文件
if((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')){ // 判断是否为字母
num[0]++;
}
else if(ch >= '0' && ch <= '9'){ // 判断是否为数字
num[1]++;
}
else{ // 其它字符
num[2]++;
}
count++; // 统计字符数
}
fclose(fp); // 关闭文件
return count; // 返回读取的字符数
}
```
该函数首先打开指定的文件,如果打开失败则返回 -1。然后逐个字符读取文件,根据字符的类型统计到对应的数组元素中,并且统计字符数。最后关闭文件,返回读取的字符数。
阅读全文