问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

【求助】C语言编程,比较两个文件相似度!

发布网友 发布时间:2022-05-22 07:06

我来回答

1个回答

热心网友 时间:2024-03-07 05:35

#include"stdio.h"
#include"string.h"
#define N(a,b) 2.0*a/b*100
FILE *pa,*pb;
int t,m;
char a[100],b[100];
/*创建文件1*/
void Creat1_Z()
{
if((pa=fopen("d:\\file1.txt","w+"))==NULL)
printf("\tCannot open this file!\n");
else
{ printf("\tEnter a string to File1:\n");
getchar();
gets(a);
fputs(a,pa);
printf("\tSuccess!\n");
}
fclose(pa);
}
/*创建文件2*/
void Creat2_Z()
{
if((pb=fopen("d:\\file2.txt","w+"))==NULL)
printf("\tCannot open this file!\n");
else
{ printf("\tEnter a string to File2:\n");
getchar();
gets(b);
fputs(b,pb);
printf("\tSuccess!\n");
}
fclose(pb);
}
/*相似性比较*/
void contrast( )
{
char str1[15],str2[15];
int i=0,j=0,t=0,s,k=1,f=1;
while(k==1)
{
for(s=0;(a[i]!=32)&&(a[i]!=0);s++,i++)//把==0去掉了 ,更简洁
str1[s]=a[i];
str1[s]='\0';
//if(str1=="") continue;
f=1;
j=0;
while(f==1)
{
for(s=0;(b[j]!=32)&&(b[j]!=0);j++,s++) //把==0去掉了 ,更简洁
str2[s]=b[j];
str2[s]='\0';
//if(str2=="") continue;
if(strcmp(str1,str2)==0)
{
t++;
f=0;
continue;
}
j++;
if(b[j]==0) f=0;
}i++;
if(a[i]==0) k=0;
}
printf("相同单词数:%d\n",t);
for(i=0,j=0,s=0;a[i]!=0;i++)
if(a[i]==32) s=0;
else if(s==0) {s=1;j++;}
for(i=0,s=0;b[i]!=0;i++)
if(b[i]==32) s=0;
else if(s==0) {s=1;j++;}
printf("相似度:%5.2f%%\n",N(t,j));
if(N(t,j)>=80) printf("相同!\n");
else printf("不同!\n");
}
/**/
void mune()
{
printf("*****************判断两个文件是否相同*****************\n");
printf("\t\t 1:创建文件1\n");
printf("\t\t 2:创建文件2\n");
printf("\t\t 3:判断相似性\n");
printf("\t\t 4:退出\n");
printf("####################请选择###########################\n");
printf("****************************************************\n");
}
/**/
void main()
{
while(t!=4)
{
mune(); //单词拼错了,应该是menu,菜单的意思
scanf("%d",&t);
switch (t)
{
case 1: Creat1_Z(); break;
case 2: Creat2_Z(); break;
case 3: contrast();break;
case 4:break;
default: printf("输入错误!请重新输入!\n");
}

}
}
我没有找到你说的个goto语句哦,不过我把那一大堆if else改掉了,而且在vc++环境下运行的很好~
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...A利用我的房子注册公司后退租并没办理注销公司。影响我再次出租。怎... ...公司要注销了,我们买的房子没签合同,房款交完了,现在怎么办?_百度... 目字旁的有哪些字跟木有关 求一部动漫讲述了城市使环境变差,女主和男主是青梅竹马,为了找出破坏... 怎样看一个女人是不是动情了? 企业写字楼如何聚气聚财? 神州数码通用软件(北京)有限公司电话是多少? 神州数码集团股份有限公司电话是多少? 请问神州数码客服电话是什么? 请问地下城与勇士50级的狂暴者用什么装备最好!!! 谁能提供C#里计算两个字符串相似度的算法 谁知道,2012年云南省考研的具体时间,地点和需要的费用及证件?? 2021云南艺术学院考研现场确认时间? 云南省考研是每年的几月份进行? 龙钱宝上可以存100万吗 谁有手机里面的摄像头图片 历年北京大学的GIS考研生考试分数线大概是多少?还有就是复试的比例是多少?知道的希望告诉我下。谢谢! 求助:北师大gis考研历年复试分数线!!! 首师大06年考研的录取分数是多少呢? 首师大GIS考研! gis考研学校分数线 首都师范大学GIS考研,13年复试分数线是305,首师大gis排名全国前10,怎么这么低? 整理书有什么技巧 指南针的n极s极分别指的是什么方向指南针n和s是什么方向 初中最有意义的一件事 最有意义的一件事? 最有意义的一件事是什么? 上海微创软件怎么样?我是一个计算机硕士,他们打电话叫我面试。待遇如何?发展前景? 途中的动漫人物是谁? 超时空要塞原始恶魔 中央电视台的新闻联播有复播吗 复播时间是什么时候? 20149月9日中央一台新闻联播主要内容 中央电视台新闻联播1月3 日怎么能找到?? 中央电视台新闻联播版块 中央台新闻联播如果错过了到哪里去看 中央台新闻联播是几点开始的几点结束 为什么中央台新闻联播在晚上7点??? 中央电视台新闻联播能不能在网上重播 中央台新闻联播播出结束时间 r35300u和i310100哪个好 amdryzen5300u能不能玩GTA5? 联想v15+50004核处理器全新出手能卖多少钱刚买3天? 办理移动的20兆宽带真的有20兆吗 移动宽带20兆网速,怎么样? 宁夏回族自治区是中国移动20兆光纤网速网速真能达到20兆? 移动宽带20兆一年现在多少钱?网速怎么样? 中国移动的宽带,网速怎么样?我想办一个20兆的网络不知道大家用起来如何,我们小区里是移动的光纤。2 移动宽带20m下载速度是多少.10m又是多少 分辨率最高的是什么手机? 哪个品牌手机 清晰度高