检验文件相似度 源代码

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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]=='.')

{

相关文档
最新文档