思路:
1.定义结构体保存每个单词以及出现次数(频率)
2.读取文件,用fscanf函数扫描文件中的单词
3.for循环判断单词是否重复出现,若重复出现,次数+1,否则添加新单词
4.打印输出
具体代码如下:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct{
char str[50];
int cnt;
}Str;
int main() {
char tmp[50];
FILE *fp;
Str words[200];
int num=0;
int i,j,neww=1;
fp = fopen("0422.txt", "r");
while ( fscanf(fp,"%s",tmp)!=EOF ) {
neww=1;
for (i=0; i<num; i++) {
if ( strcmp(tmp, words[i].str)==0 ) {
neww=0;
words[i].cnt++;
}
}
if (neww){
for (j=0; tmp[j]!='\0'; j++) {
words[num].str[j] = tmp[j];
}
words[num].str[j] = '\0';
words[num++].cnt = 1;
}
}
printf("一共%d个不同的单词,每个单词出现次数如下:\n",num);
for (i=num-1; i>=0; i--) {
printf("%-10s %2d\n", words[i].str, words[i].cnt);
}
fclose(fp);
return 0;
}
文本文件
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/cdc5a28d1dacab8bfe8ce2234a7dc8bb.png)
输出
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7c9e3a42523400e3088cf38f86669743.png)