C语言:统计文本文件单词数、段落数。

题目描述:打开一个英文文本文件,假设文本文件单词之间全部用“空格”隔开,文本各段之间用“回车符”分开,统计输出文本的段数量,总单词数量,以及文本段的最长、最短、平均单词数量。

 test.txt 文本内容:随便百度的内容C语言:统计文本文件单词数、段落数。_第1张图片

 C语言代码:

#include
#include
#include

#define MAX_LINE 1024

void main(){
    //duanluo 表示段落数,words表示某一段的单词数
    int duanluo = 0, words = 0;
    //min表示最小段落的单词数,max:最大段落的单词数,sum:单词总数
    int min = 65525, ave = 0, max = 0,sum = 0;
    FILE* fp;        //文件指针
    
    char buffer[MAX_LINE] ;        //缓冲区
    int len ;    //行字符个数
    int i;
    fp = fopen("test.txt","r");
    if(fp == NULL){
        printf("cannot open file!");
        exit(0);
    }
    //读取文件内容
    while(! feof(fp)){
        
        // fgets() 在读出 MAX_LINE 个字符之前,遇到 换行符 或 EOF 则读出结束
        if(fgets(buffer, MAX_LINE, fp) != NULL){
            duanluo ++;
            len = strlen(buffer);
            //遇到第一个空格之前已有一个单词
            words = 1;
            sum ++;
            //len - 1 是为了去掉换行符所占位置
            for(i = 0; i < len - 1; i++){
                if(buffer[i] == ' '){
                    words ++;
                    sum ++;
                }
            }
        }
        
        if(min > words){
            min = words;
        }
        if(max < words){
            max = words;
        }
        
    }

    fclose(fp);
    ave = sum / duanluo;
    //输出
    printf("\n\t 总单词数为 %d \n \n",sum);
    printf("\t 最小段落单词数为 %d \n \n",min);
    printf("\t 最大段落单词数为 %d \n \n",max);
    printf("\t 总段落数为 %d \n \n",duanluo);
    printf("\t 段落平均单词数为 %d \n",ave);

}

运行结果:

 C语言:统计文本文件单词数、段落数。_第2张图片

你可能感兴趣的:(c语言)