检验文件相似度 源代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
// xiangsidu.cpp : Defines the entry point for the console application.
//
//#include "stdafx.h"
//#include "stdlib.h"
#include
#include
void format(); //没有参数或参数为“/?”时的帮助提示
void xiangsidu(); //实现对两个目标文件统计相似度的功能
int read1(char *txt); //从命令行参数输入的文件指针读入文件1的内容
int read2(char *pho); //从命令行参数输入的文件指针读入文件2的内容
void save1(); //将文章1的统计结果保存到3.txt文本文件中
void save2(); //将文章2的统计结果保存到4.txt文本文件中
char article1[50000];
char article2[50000];
char word1[500][20];
char word2[500][20];
int number2,number1;
struct word
{
char danci[20];
int num;
float bili;
}fword1[100],fword2[100];
/******************************主函数
************************************/
void main (int argc, char *argv[])
{
int flag1,flag2;
if(argc==1) format();
else if ((argc==2)&&strcmp(argv[1],"/?")==0) format();
else if(argc==3)
{
flag1=read1(argv[1]);
flag2=read2(argv[2]);
if(flag1==0||flag2==0)
printf("读取信息失败!\n");
else
{
xiangsidu();save1();save2();
}
}
else printf("\n该程序应该携带2个参数!\n");
}
void format() //没有参数或参数为“/?”时的帮助提示{
printf("\n命令格式为:xingsidu SourceFile TargetFile\n\n");
printf("SourceFile指文章1的文本文件\n");
printf("TargetFile指文章2的文本文件\n");
}
/***************从命令行参数输入的文件指针读入文件1的内容
*****************/
int read1(char *txt)
{
FILE *ftxt;
int i,n;
if((ftxt=fopen(txt,"rb"))==NULL) //txt即指向的文本文件1的指针
{
printf("%s文件无法打开!\n");
return 0;
}
printf("\n\n\t\t\t读取文件...\n\n");
for (i=0;!feof(ftxt);i++) //文件内部指针未到文件尾,执行循环体
article1[i]=fgetc(ftxt); //从ftxt所指文件中读取一个字节信息n=i-1;
fclose(ftxt);
article1[i]='\n';
printf(" \n文章1内容如下:\n\n");
for(i=0;i { putchar(article1[i]); } return 1; } /******************从命令行参数输入的文件指针读入文件2的内容 *****************/ int read2(char *pho) { FILE *fpho; int i,n; if((fpho=fopen(pho,"rb"))==NULL) //pho即指向的文本文件2的指针 { printf("%s文件无法打开!\n"); return 0; } printf("\n\n\t\t\t读取文件...\n\n"); for (i=0;!feof(fpho);i++) //文件内部指针未到文件尾,执行循环体 article2[i]=fgetc(fpho); //从fpho所指文件中读取一个字节信息 n=i-1; fclose(fpho); article2[i]='\n'; printf(" \n文章2内容如下:\n\n"); for(i=0;i { putchar(article2[i]); } return 1; } /**********************对文章1和文章2的相同单词进行统计 ****************************/ void xiangsidu() { int i=0,j=0,k=0,m=0,flag=1; for(i=0;article1[i]!='\0';i++) //二维数组word1[]记录文章1中的所有单词 { if(article1[i]>=65&&article1[i]<=90) article1[i]=article1[i]+32; if(article1[i]==39||article1[i]>=97&&article1[i]<=122) { word1[j][k]=article1[i]; k++; } else if(article1[i]==' '||article1[i]==','||article1[i]=='.') {