| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1442 人关注过本帖
标题:[讨论]关于从文本文件中查找特定单词
只看楼主 加入收藏
蓝色神话
Rank: 2
等 级:论坛游民
威 望:1
帖 子:404
专家分:24
注 册:2006-5-11
收藏
 问题点数:0 回复次数:1 
[讨论]关于从文本文件中查找特定单词
其实这是我的一个C语言课程设计里的题目,由于我对文件不是很熟悉(这是我第一次用到文件的程序),所以程序就显得有些冗长,请高手指教一二!

1.2 单词统计

【问题】

统计某篇英文小说中某单词的出现次数,并输出单词所在的句子。

【提示】

英文小说存储在一个文本文件中。一个单词是由空格或标点符号(含换行符)分隔的字符序列,且约定小说中的词汇一律不跨行;句号(.)或分号(;)唯一确定一个句子。文本文件名和待统计的单词由键盘输入,输出单词所在的句子和出现次数。

可设计两个函数:getsentence(str1,fp)从fp文件读取一句存放在字符数组str1中;checkword(str1,str2)检查存放在字符数组str2中的单词是否出现在str1中的句子中,若出现则输出该句子并返回单词在句子中的出现次数。
以下是我写的源程序,没有完全按照提示来:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#define N 200
#define M 20
static int sum=0;/*sum是用来记录目标单词总共出现的次数,必须用static型*/
void checkword(char* p1,char* objectword){
char temp[M];/*这个数组是用来存取从句子中提取出来的单词*/
int i=0,j,count=0;
while(p1[i]!='\0'){
j=0;
while(isalpha(p1[i])){/*用来检测p1[i]是不是字母*/
temp[j]=p1[i];
i++;
j++;
}
temp[j]='\0';
if(strcmp(temp,objectword)==0)/*判断提取出来的单词是否与要查找的单词一致*/
count++;
while(!isalpha(p1[i])&&p1[i]!='\0'){
i++;
}
}
if(count!=0){
printf("%s\n",p1);
sum+=count;
}
}
void getsentence(char* p1,FILE* p2,char* objectword){
int i;
char ch;
ch=fgetc(p2);
while(ch!=EOF){
i=0;
while(ch!='.'&&ch!=';'&&ch!=EOF){
p1[i]=ch;
i++;
ch=fgetc(p2);

}
if(ch=='.'||ch==';'){
p1[i]=ch;
p1[i+1]='\0';
checkword(p1,objectword);
ch=fgetc(p2);
}
}
}
int main(){
char str1[N],str2[M],filename[M];
char ch;
FILE* fp;
printf("Please input the name of the file:\n");
scanf("%s",filename);
printf("Please input the word which you want to search:\n");
scanf("%s",str2);
fp=fopen(filename,"r");
if(fp==NULL){
printf("cannot open the file\n");
exit(0);
}
getsentence(str1,fp,str2);
printf("The word which you want to search in the file has been appeared %d times in total!\n",sum);
fclose(fp);
system("pause");
return 0;
}
程序在devcpp下调试通过,基本没什么问题,望高手们能够给出更好的代码!

搜索更多相关主题的帖子: 文本文件 单词 
2006-06-10 22:49
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
楼主这个程序已经搞得很不错了,要改进除非多开销内存资源:
1。开辟一个足够大的char数组,以接纳该文本文件全部内容。
2。将文件全部内容读入该char数组(将它视为1个特长字符串)
3。反复调用string.h中的strstr()函数即可统计出楼主所求。

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-11 05:42
快速回复:[讨论]关于从文本文件中查找特定单词
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015838 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved