请编程实现读取并统计文本文件“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 20:06:15 浏览: 55
下面是实现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 error!\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. 打开文件并检查是否成功打开;
2. 遍历文件中每一个字符,判断其属于哪一类字符,并将对应类别的计数器加1;
3. 统计完毕后关闭文件,并返回读取的字符数。
相关问题
用c语言编程实现读取并统计文本文件“ex802.txt”中字母、数字和其它字符的个数,然后将统计结果输出到屏幕。注:该文本文件与源码文件保存在同一个文件夹中。
好的,以下是 C 语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main() {
int letter_count = 0, digit_count = 0, other_count = 0;
char c;
// 打开文件
FILE* fp = fopen("ex802.txt", "r");
if (fp == NULL) {
printf("无法打开文件!\n");
return 1;
}
// 逐个字符读取并统计
while ((c = fgetc(fp)) != EOF) {
if (isalpha(c)) {
letter_count++;
} else if (isdigit(c)) {
digit_count++;
} else {
other_count++;
}
}
// 关闭文件
fclose(fp);
// 输出统计结果
printf("字母个数:%d\n", letter_count);
printf("数字个数:%d\n", digit_count);
printf("其他字符个数:%d\n", other_count);
return 0;
}
```
以上代码通过 `fopen` 函数打开文本文件,然后使用 `fgetc` 函数逐个字符读取文件并统计字母、数字和其他字符的个数。最后使用 `fclose` 函数关闭文件,并打印输出统计结果。
请编程实现读取并统计文本文件“ex802.txt”中字母、数字和其它字符的个数,然后将统计结果输出到屏幕。注:该文本文件与源码文件保存在同一个文件夹中。 目前已完成main函数的编写,请编程实现statisticsFromFile函数,函数的功能和要求
可以使用C++的文件输入输出流来读取并统计文本文件中的字符类型个数。实现的代码如下:
```cpp
#include <iostream>
#include <fstream>
using namespace std;
void statisticsFromFile() {
char c;
int letterCount = 0, digitCount = 0, otherCount = 0;
ifstream inFile("ex802.txt");
if (!inFile) {
cout << "Error: failed to open file!" << endl;
return;
}
while (inFile.get(c)) {
if (isalpha(c)) {
letterCount++;
} else if (isdigit(c)) {
digitCount++;
} else {
otherCount++;
}
}
inFile.close();
cout << "The number of letters: " << letterCount << endl;
cout << "The number of digits: " << digitCount << endl;
cout << "The number of other characters: " << otherCount << endl;
}
int main() {
statisticsFromFile();
return 0;
}
```
在该函数中,首先使用ifstream对象打开文本文件,判断文件是否成功打开。然后使用while循环来逐个读取文件中的字符,并判断字符类型,分别累加计数器。最后输出统计结果。注意在函数结束前要关闭文件流。
阅读全文