字符串相似度c语言,【求助】C语言编程,文件相似度!

#includeint main(int argc,char* argv[]){

int i,j;

int fd1 ,fd2;

int file1_len ,file2_len,sumbase1,sumbase2,sumbase = 0;

int yes = 0;

char filec;

char file1_buf[9000] = {0};

char file2_buf[9000] = {0};

if( (fd1 = open(argv[1],O_RDONLY)) < 0 ){

printf("file %s open error!\n",argv[1]);

exit(-1);

}

if( (fd2 = open(argv[2],O_RDONLY)) < 0 ){

printf("file %s open error!\n",argv[2]);

exit(-1);

}

file1_len = lseek(fd1,0,SEEK_END);

lseek(fd1,0,SEEK_SET);

file2_len = lseek(fd2,0,SEEK_END);

lseek(fd2,0,SEEK_SET);

if( read(fd1,file1_buf,file1_len) < 0 ){

printf("read error!\n");

exit(-1);

}

if( read(fd2,file2_buf,file2_len) < 0 ){

printf("read error!\n");

exit(-1);

}

//去掉符号

for( i = 0,j = 0 ; i < file1_len ; i++){

if( file1_buf[i] >= '0' && file1_buf[i] <= '9' || file1_buf[i] >= 'A' && file1_buf[i] <= 'z')

file1_buf[j++] = file1_buf[i];

}

sumbase1 = j;

for( i = 0,j = 0 ; i < file2_len ; i++){

if( file2_buf[i] >= '0' && file2_buf[i] <= '9' || file2_buf[i] >= 'A' && file2_buf[i] <= 'z')

file2_buf[j++] = file2_buf[i];

}

sumbase2 = j;

sumbase = sumbase1 <= sumbase2 ? sumbase1 : sumbase2;

for( i = 0 ,j = 0; i < sumbase ; i++,j++){

if( file1_buf[i] == file2_buf[j] ){

yes++;

}else if(file1_buf[i] == file2_buf[j+3] && file1_buf[i+1] == file2_buf[j+4]){

j +=3;

}else if(file1_buf[i] == file2_buf[j+4] && file1_buf[i+1] == file2_buf[j+5]){

j +=4;

}else if(file1_buf[i] == file2_buf[j+5] && file1_buf[i+1] == file2_buf[j+6]){

j +=5;

}else if(file1_buf[i] == file2_buf[j+6] && file1_buf[i+1] == file2_buf[j+7]){

j += 6;

}else if(file1_buf[i] == file2_buf[j+8] && file1_buf[i+1] == file2_buf[j+9]){

j += 8;

}else if(file1_buf[i] == file2_buf[j+10] && file1_buf[i+1] == file2_buf[j+11]){

j += 10;

}else if(file1_buf[i] == file2_buf[j+11] && file1_buf[i+1] == file2_buf[j+12]){

j +=11;

}else if(file1_buf[i] == file2_buf[j+12] && file1_buf[i+1] == file2_buf[j+13]){

j +=12;

}else if(file1_buf[i] == file2_buf[j+20] && file1_buf[i+1] == file2_buf[j+21]){

j +=20;

}else if(file1_buf[i] == file2_buf[i+21] && file1_buf[i+1] == file2_buf[i+22]){

j +=21;

}else if(file1_buf[i] == file2_buf[j+25] && file1_buf[i+1] == file2_buf[j+26]){

j +=25;

}else if(file1_buf[i] == file2_buf[i+26] && file1_buf[i+1] == file2_buf[i+27]){

j +=26;

}

}

printf("相似的比例大约是:%0.3f%% \n",((yes * 1.0 / sumbase)*100));

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值