C或C++ 比较两个文本文件

C或C++ 比较两个文本文件,第1张

#include <stdioh>

#include <stringh>

#define MAXLEN 257

void CompareFile(FILE fa,FILE fb,FILE flog) {

char sa[MAXLEN],sb[MAXLEN],flag;

while(!feof(fa)) {

fgets(sa,MAXLEN,fa);

flag = 1;

while(!feof(fb)) {

fgets(sb,MAXLEN,fb);

if(strcmp(sa,sb) == 0) {

flag = 0;

break;

}

}

if(flag) fputs(sa,flog);

rewind(fb);

}

}

int main() {

FILE fa,fb,flog;

fa = fopen("atxt","rt");

fb = fopen("btxt","rt");

flog = fopen("logtxt","wt");

if(fa == NULL || fb == NULL || flog == NULL) {

printf("打开文件失败。\n");

return 1;

}

CompareFile(fa,fb,flog);

rewind(fa);

rewind(fb);

CompareFile(fb,fa,flog);

fclose(fa);

fclose(fb);

fclose(flog);

return 0;

}

UltraCompare 应该比较好,速度很快,功能也比较齐全,可以同时显示两个文件的内容,并直接将不同的地方标识出来,我们以前改代码经常用这个。

附介绍:

UltraEdit 公司出品的 UltraCompare 是一款文件内容比较工具。可进行文本模式,文件夹模式以及二进制模式的比较,并且可以对比较的文件进行合并,同步等 *** 作,支持撤消 *** 作。拥有书签与收藏夹功能,可以设置过滤,的确是一款比较出色的文件比较程序。你可以用它来比较两个文本文件的不同,也可以比较以二进制的模式比较两个EXE 文件的不同,还可以用它来比较两个文件夹及其子文件夹内文件的不同

给你个下载链接:>

众所周知,两份文档之中都会存在着一些细微的差别,如果单纯通过人工的方法来进行校对,不仅效率低,而且也容易出错,特别是容易漏掉一些不太明显的区别,尤其是一些复杂的网页、文件夹,因此我们需要一款工具能够帮助我们清晰明了的分析比较出它们之间的差异且便于后期修改。

下面小编将在Windows系统平台上,教大家利用Beyond Compare 4 来进行文本、文件夹的对比。

一、打开软件

打开软件,点击软件左下角的加号,就会出现如下图1所示界面。从图1我们可以看到,Beyond

Compare有8种比较方式,分别是文件夹比较、文本比较、表格比较、16进制比较、MP3比较、比较、注册表比较和版本比较,接下来小编带大家来深入了解其中的文本和文件夹比较方式。

图1:8种比较方式

二、文本比较

文本比较显示的颜色只有红色和黑色两种颜色,黑色代表的是相同,红色代表的是不同。文本对比是逐个一一对比,只有文本的内容与位置相匹配才能显示黑色,否则显示的是红色。通过这样的颜色对比用户可以明显看出两个文件的不同之处。

如下图二所示,大家可以清楚的看出两份文档内容之间的区别,不同之处已经用来红色来进行标注,文本比较还可以逐字节完整地验证每个文件。

图2:文本比较

三、文件夹比较

接下来进行文件夹的比较,为了让大家明显的看出区别,小编特意新建了两个文件夹,分别为文件夹1和文件夹2,文件夹里面有相同的内容,也有不同的内容,如图3所示。文件夹1包含了两个文本(相同的文本、不同的文本),文件夹2包含了三个文本(相同的文本、不同的文本、新加的文本)。

图3:新建2个文件夹

打开Beyond

Compare的文件夹对比,分别打开这2个文件夹,如下图4所示。从图4可以看出,文件一共有三种颜色,分别是黑色、红色和蓝色。其中,黑色代表着2个文件夹中相同的文件,红色代表着两个文件夹中文件名相同但文件内容不同的文件,蓝色代表着一个文件夹里有该文件,但另一个文件夹却没有该文件,既新增文件。

图4:文件夹对比

首先提取出单个文字,需要使用精易模块正则(模块自己百度),易语言正则取出汉字会出问题

然后利用取反节点方法找出相同文字,使用子文本替换将相同文字删除,并将不同文字加入到编辑框3内

版本 2

支持库 EDataStructure

程序集 窗口程序集_启动窗口

子程序 _按钮1_被单击

局部变量 文本, 文本型

局部变量 正则, 正则表达式类

局部变量 节点, 节点

局部变量 N, 整数型

文本 = 编辑框1内容 + 编辑框2内容

正则创建 (“\d|\D”, 文本)

计次循环首 (正则取匹配数量 (), N)

    如果真 (取反 (节点加入属性 (正则取匹配文本 (N), 真)))

        文本 = 子文本替换 (文本, 正则取匹配文本 (N), “”, , , 真)

    如果真结束

计次循环尾 ()

编辑框3内容 = 文本

1 读取txt

c#使用filestream读取text, 读出来是一行一行的,可以自行组成一个List<string>的

2 对比,

你这个其实就是list1和list2 的分行比较,每次比较一行字符串 看是不是符合你要的规律

foreach(var line1 in list1) //line1 就是txt1中的某一行

{

   foreach(var line2 in list2)

   {

        if(line2 == line1){} //想怎么比较就怎么比较

    }

}

3输出,

2中你自己写好if之后,符合条件的line1和line2是可以记录下来  组成一个新的list3的,

还是使用filestream  一行一行的输出到txt3中就OK 了。

 public void Read(string path)  //读取txt

        {

            StreamReader sr = new StreamReader(path,EncodingDefault);

            String line;

            while ((line = srReadLine()) != null) 

            {

                ConsoleWriteLine(lineToString());

            }

        }

        

      public void Write(string path) //写TXT

        {

            FileStream fs = new FileStream(path, FileModeCreate);

            StreamWriter sw = new StreamWriter(fs);

            //开始写入

            swWrite("Hello World!!!!");

            //清空缓冲区

            swFlush();

            //关闭流

            swClose();

            fsClose();

        }

、选中其中的所有内容,然后点击“开始”-“查找和选择”-“定位条件”2、然后在d出的对话框勾选“行内容差异单元格”3、点击确定以后就会看到图一所示的对比图了,其中特殊颜色标注的就是数据内容不同的区域,当然如果我们对比的是列内容,那么刚才就有勾选“列内容差异单元格”

以两个字符串文本为例:

1、首先把两个字符串文本的内容复制下来:

2、在空白处点击“=”

3、在上方f(x)函数中,找到EXACT函数

4、在d出的选择框中,点击第一个按钮

5、选择第一列的数据

6、点击确定后,选择第二行的按钮,选择第二列的数据

7、两列数据都确认以后,点击确定按钮

8、第一行数据就比较完毕,如果字符完全一样,输出TRUE,不一样会输出FALSE

以上就是关于C或C++ 比较两个文本文件全部的内容,包括:C或C++ 比较两个文本文件、谁能帮我把两个TXT文本文挡的内容进行对比、如何快速对比两个文件夹里的文件的不同等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/9741127.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存