马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
%统计子串substring在字符串string中出现在次数
int strstr_cnt(char *string,char *substring)
{
int i=0;j=0;k=0;count=0;
for(i=0;string;i++)
for(j=i,k=0;substring[k]&&string[j]==substring[k];j++,k++)
if(~substring[k+1])count++;
return(count);
}
int main(int argc,char *argv[])
{
int count,count1,i,j;last=0,last1=0;
char *temp,*count2,*string_all;
char buffer[512], %从文件中读入的一串字符
string_sub[20], %需要统计出现次数的词语
tmp[3]; %这个字符串包含,词语的最后一个汉字(为两个字节)和一个字符串结束符\0
FILE *fp;
fp=fopen("all.txt","rt");
fprintf ('注意事项:\n\n\n(1)请先把待查找文本放在本目录并将其重命名为all.txt。\n\n(2)确认文本开头和结尾不能有空行,否则会运行错误。\n\n\n\n');
while(1)
{
last=0;
fprintf('请输入要检索的词:\n');
gets(string_sub);
%把输入的词的最后一个汉字存入tmp
tmp[1]=string_sub[strlen(string_sub)-1];
tmp[0]=string_sub[strlen(string_sub)-2];
tmp[2]=0;
%循环统计string_sub和tmp在文件中出现的次数
while(~feof(fp)) %判断fp 是不是文件结尾
{
temp=fgets(buffer,sizeof(buffer),fp); %读取字符串
if(temp~=NULL) {
count=strstr_cnt(temp,string_sub);
count1=strstr_cnt(temp,tmp);
} else
break;
last+=count;
last1+=count1;
}
fseek(fp,0,SEEK_SET);%移动指针
%输出统计的结果
if(last1==0)
fprintf('很遗憾,一个也没有查到,唉……\n\n\n\n');
else
{
fprintf('\"%s\"出现的次数为%d\n',string_sub,last);
fprintf('\"%s\"出现的次数为%d\n',tmp,last1);
fprintf('词频为:%f\n\n',((float)last)/last1);
}
}
getchar();
}
[ 本帖最后由 eight 于 2007-6-8 15:19 编辑 ] |