做一个词频统计程序,该程序具有以下功能
(1)可导入任意英文文本文件
(2)统计该英文文件中单词数和各单词出现的频率(次数),并能将单词按字典顺序输出。
(3)将单词及频率写入文件。
本程序思路大概为:
1.打开需要的txt文件,把其中的文本内容读入程序流中
2 .将文本内容中的大写字母转化为小写,去除,。、?等特殊字符
3. 用单链表对词频进行统计
4. 用冒泡法对统计结果进行排序
5.打印输出全部词频或者频率最高的单词和其出现次数
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 5000
/*定义结构体*/
struct Word
{
int num; //定义单词频数
char str[20];
}
word[MAX];
/*读取文章*/
void read(char *article,int *total,char *ch)
{
int i;
FILE*fp;
{
char FileName[20];
printf("请输入文件名(例如//123.txt): ");
scanf("%s",FileName);
fp=fopen(FileName,"r"); //打开需要的文件
if(!fp)
{
printf("\n打开文件失败!");
exit(0);
}
}
//获取文章及总字符数
(*ch)=fgetc(fp); //先判断文章是否为空。
if(*ch!=NULL)
{
article[0]=(*ch);
for(i=1;!feof(fp);i++) //依次读取文章
article[i]=fgetc(fp);
article[i]='\0';
(*total)=strlen(article);
}
fclose(fp);
}
/*显示文章*/
void show(char *article,int *total,char *ch)
{
printf("%s",article);
printf("\n");
}
/*按字典顺序