声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1252|回复: 5

[编程技巧] 这个算词频的程序帮忙看一下

[复制链接]
发表于 2007-6-8 08:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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 编辑 ]
回复
分享到:

使用道具 举报

 楼主| 发表于 2007-6-8 08:52 | 显示全部楼层
我的程序是用c编的,可以运行的,可老师要用matlab,我对matlab不太懂,请高人帮忙改一下!谢谢
 楼主| 发表于 2007-6-8 09:07 | 显示全部楼层
说int i,j,k,count=0;有问题,请指教,多谢了
发表于 2007-6-8 09:20 | 显示全部楼层
在MATLAB中,这项工作要简单得多.只要一句话
a=findstr(string,substring)
就能返回substring在string中出现的位置
length(a)就是个数了

评分

1

查看全部评分

 楼主| 发表于 2007-6-8 09:35 | 显示全部楼层
因为我的数据很多,我想分组读取,我以前学c的,希望可以说的详细些,谢谢
发表于 2007-6-8 09:54 | 显示全部楼层


自己 help findstr 吧

其他问题请多看看基础书、本版置顶贴:聚宝盆等等
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-24 05:31 , Processed in 0.057826 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表