写一个程序,是打开某个英语文本文件,统计里面的每个单词出现的次数,
然后把结果保存在另外一个新建的文本文件中!
麻烦各位帮帮我做一下这个题好吗??最好明天之前给我答案可以吗??
写的有点麻烦...手头没TC编译...看看思路吧
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 100int main()
{struct Word
{
char letter[4];//保存单词
int count;//记录单词出现的次数
}word[N];int n=0,i=0;
FILE *f,*s;//读取和写入的文件
char ch;
if((f=fopen(\"in.txt\",\"r\"))==0) exit (0);
while((ch=fgetc(f))!=EOF)
{
if(ch==' '||ch==','||ch=='.'||ch=='\n')
{
word[n++].letter[i]='\0';//遇到上面的几个标记结束此单词的存储准备处理下一个单词
continue;
}
if(ch<='Z'&&ch>='A') ch+=32;//有大写转换成小写即the和The属于一个单词
word[n].letter[i++]=ch;//接受单个字符
}
word[n].letter[i]='\0';
word[0].count=1;
for(i=0;i<=n;++i)
{
if(word[i].count==-1) continue;
for(int j=i+1;j<=n;++j)
{
if(strcmp(word[i].letter,word[j].letter)==0)
{
word[i].count++;// 如果比较单词相同,该单词个数增加
word[j].count=-1;//相同的单词计数器置为负
}
else if((strcmp(word[i].letter,word[j].letter)!=0)&&(word[j].count==-1))//不同且是出现过的单词结束本次循环
continue;
else word[j].count++;//比较结果不同切比较的单词为出现过,该单词个数增加
}}
if((s=fopen(\"out.txt\",\"w\"))==0) exit (0);
for(i=0;i<=n;++i)
if(word[i].count!=-1) //输出结果
fprintf(s,\"%s :%d\n\",word[i].letter,word[i].count);fclose(f);
fclose(s);return 0;