100分 c语言对比两个文件

100分 c语言对比两个文件,第1张

最长公共子序列方法比较两个文件的相似性。输入两个文件的名字,输出一个文件枣宏,不同的地方用红色标出。

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#define max(x,y) (((x)>(y))?(x):(y))

int LCS(char *str1, char *same1, int len1, char *str2, char *same2, int len2)

{

int same, i, j

int **midLCS

midLCS = (int **)malloc(sizeof(int *) * (len1 + 1))

for (i = 0i <= len1i++) {

midLCS[i] = (int *)malloc(sizeof(int) * (len2 + 1))

}

for (i = 0i <猜庆= len1i++) {

midLCS[i][0] = 0

}

for (i = 0i <= len2i++) {

midLCS[0][i] = 0

}

for (i = 1i <= len1i++)

{

for (j = 1j <= len2j++)

{

if (str1[i - 1] == str2[j - 1]) {

midLCS[i][j] = midLCS[i - 1][j - 1] + 1

}

else {

midLCS[i][j] = max(midLCS[i - 1][j], midLCS[i][j - 1])

}

}

}

for (i = len1, j = len2i >0 &&j >0)

{

if (str1[i - 1] == str2[j - 1]) {

same1[i - 1] = 1

same2[j - 1] = 1

--i

--j

}

else if (midLCS[i - 1][j] >midLCS[i][j - 1]) {

--i

}

else {

--j

}

}

same = midLCS[len1][len2]

for (i = 0i <= len1i++) {

free(midLCS[i])

}

free(midLCS)

return same

}

void show_compare(char *str, char *same, int len, FILE *fout)

{

int i, flag = 0

for (i = 0i <leni++)

{

if (str[i] == '\n') {

fprintf(fout, " <br>")

}

else if (str[i] == '\t') {

fprintf(fout, "")

}

else {

if (same[i] == 1) {

if (flag == 1) {

fprintf(fout, "穗岩握 </font>")

flag = 0

}

fputc(str[i], fout)

}

else {

if (flag == 0) {

fprintf(fout, " <font color=red>")

flag = 1

}

fputc(str[i], fout)

}

}

}

if (flag == 1)

fprintf(fout, " </font>")

}

int main()

{

int i, len1, len2

FILE *fin1, *fin2, *fout

char buf[1024]

char *str1, *str2, *same1, *same2

printf("file1: ")

scanf("%s", buf)

fin1 = fopen(buf, "rb")

if (fin1 == NULL) {

printf("%s not exist!\n", buf)

return 0

}

printf("file2: ")

scanf("%s", buf)

fin2 = fopen(buf, "rb")

if (fin2 == NULL) {

printf("%s not exist!\n", buf)

return 0

}

fout = fopen("compare.html", "w+")

fseek(fin1, 0, SEEK_END)

len1 = (int)ftell(fin1)

fseek(fin1, 0, SEEK_SET)

fseek(fin2, 0, SEEK_END)

len2 = (int)ftell(fin2)

fseek(fin2, 0, SEEK_SET)

str1 = (char *)malloc(sizeof(char) * len1)

str2 = (char *)malloc(sizeof(char) * len2)

same1 = (char *)malloc(sizeof(char) * len1)

same2 = (char *)malloc(sizeof(char) * len2)

fread(str1, 1, len1, fin1)

fread(str2, 1, len2, fin2)

LCS(str1, same1, len1, str2, same2, len2)

show_compare(str1, same1, len1, fout)

fprintf(fout, " ----------------------------------------------------------------<br>")

show_compare(str2, same2, len2, fout)

free(str1)

free(str2)

free(same1)

free(same2)

fclose(fin1)

fclose(fin2)

fclose(fout)

}

P是与颤局岁时间相关,表示该文件的公开日在本申请的申请日茄睁与优先权日之间,或其他需要核实优先权的情况

x、y与内容相关。x表示该文件能单独破坏本腊简申请的新颖性或创造性。y表示该文件能与其他文件一起破坏本申请的创造性。

如下:

工具/原料:联想拯救者Y700、Windows7、word2016。

1、打开电脑,如图,打开word页面。如果所示。选择红框所示的按钮。

2、选择比较按钮,如红框所示。

3、d出了比较文档对话框哗档如图所示

4、我们根据路径选择比较的文档。如图所示。

5、如图所示,word把两个文档的散基不同之处比较了出来,红竖线表明文档不同的地方。如图所示。我们鼠标点击红竖线,就会显示出我们怎么修改乱掘乱的内容。删除线表示修改的地方。不带删除线的暗红色字体,则是修改的新内容。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12400318.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存