这个算词频的程序帮忙看一下
%统计子串substring在字符串string中出现在次数int strstr_cnt(char *string,char *substring)
{
inti=0;j=0;k=0;count=0;
for(i=0;string;i++)
for(j=i,k=0;substring&&string==substring;j++,k++)
if(~substring)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, %从文件中读入的一串字符
string_sub, %需要统计出现次数的词语
tmp; %这个字符串包含,词语的最后一个汉字(为两个字节)和一个字符串结束符\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=string_sub;
tmp=string_sub;
tmp=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 编辑 ] 我的程序是用c编的,可以运行的,可老师要用matlab,我对matlab不太懂,请高人帮忙改一下!谢谢 说int i,j,k,count=0;有问题,请指教,多谢了 在MATLAB中,这项工作要简单得多.只要一句话
a=findstr(string,substring)
就能返回substring在string中出现的位置
length(a)就是个数了 因为我的数据很多,我想分组读取,我以前学c的,希望可以说的详细些,谢谢 原帖由 lcszxy 于 2007-6-8 09:35 发表 http://www.chinavib.com/forum/images/common/back.gif
因为我的数据很多,我想分组读取,我以前学c的,希望可以说的详细些,谢谢
自己 help findstr 吧
其他问题请多看看基础书、本版置顶贴:聚宝盆等等
页:
[1]