Windows下比较两个文件的不同(命令行操作/相关软件)
2013-05-21 10:12
405 查看
写在前面
做ACM题目的时候,往往要比较程序输出与样例输出,以确保程序正确性。当样测试样例比较少的时候,直接人工比对就可以了,但当测试数据比较大(上百或更多)的时候,人工检查就容易出错了。假设现有两个测试文件1381.in和1381.ans,其中1381.in是程序输入文件,1381.ans程序输入对应的正确答案的输出。假设我们将自己编写的程序重定向输出到1381.out文件。那么我们就需要比对1381.ans和1381.out两个文件。只有当两个文件每一行均相等的时候,才说明程序通过了该测试用例。
文件重定向
方法一:在源码中重定向
重定向输入输出流有两种方法。一种是在源码中添加如下代码:freopen("1381.in", "r", stdin); freopen("1381.out", "w", stdout);
freopen是定义在C的stdio头文件中,因此需要添加头文件#include <stdio.h>。
而在C++中,则需要需要添加头文件#include <cstdio>才能使用freopen函数。
方法二:命令行方式
另一种方法是在命令行窗口(Dos)下运行程序,如下图所示:注:
1,其中第一个为要执行的命令。 <表示重定向输入流,其右方的1381.in为输入文件。>表示重定向输出流,右方的1381.out表示输出的内容将要存放的文件名。
2,可在程序所在文件夹内空白处按住shift键,然后鼠标右击,点击“在此处打开命令行窗口”,再输入上图所示命令即可。
文件比对
方法一:写程序判断
生成好1381.out文件之后,接下来的工作就是进行文件比对了。其实文件的比对逻辑是很简单的,无非就是同时从两个文件中读取一行字符串,然后比较字符串是否相同。若不相同,则将其输出。所以自己动手写程序判断就是了。上图中的differ.py是一个Python脚本程序,要运行该脚本,需安装Python3.0以上版本的Python解释器。当然,也可以自己用C/C++编写程序校验。differ.py代码如下:name = input("输入文件名\n") with open(str(name) + ".ans", "r") as stan: with open(str(name) + ".out", "r") as f: for s, t in zip(stan, f): s = s.rstrip() t = t.rstrip() if s != t: print() print("答案:", s) print("程序:", t) print() print("down!")
命令行窗口运行效果如下:
程序显示1381.ans中值为81的行与1381.out中对应行的不相同。也就是说,答案是81,但是程序处理得到的错误结果为90。
方法二:文件比较命令fc
事实上,在Windows中内置了如上功能的文件比较命令fc,只需如下图所示使用即可:需要特别注意的是,在某些机器上,执行上述命令的时候,会出现“fc 不是内部或外部命令.....”这样的提示,这是没有配置好“环境变量的”缘故。具体操作方法,可自行搜索。对于64位Win7系统,可参考:http://bbs.pcbeta.com/viewthread-869777-1-1.html。如果按链接所示配置之后依然出现提示,可尝试重启机器。
方法三:使用软件来比对文件
最后,我们可以使用软件来比对文件。这里推荐Beyond Compare,下载地址可自行搜索。如下是程序运行截图:相关文章推荐
- 重新想象 Windows 8 Store Apps (70) - 其它: 文件压缩和解压缩, 与 Windows 商店相关的操作, app 与 web, 几个 Core 的应用, 页面的生命周期和程序的生命周期
- 通过grep -f 比较两个文件的不同
- 合并两个文件内容等相关操作
- 比较两个文件不同
- windows命令行文件中获取bat文件所在目录相关路径
- java文件相关操作,比较。
- windows常用命令行操作及相关快捷方式
- 用python比较两个文件中内容的不同之处, 并输出行号和内容.
- Linux和Windows下文件和目录的相关属性及操作
- 探索Windows命令行系列(4):通过命令操作文件和文件夹
- 比较两个文件的不同
- Linux比较两个文件之间的不同
- 文件比较. 写一个比较两个文本文件的程序. 如果不同, 给出第一个不同处的行号和 列号.
- diff命令比较两个文件的不同
- Linux diff比较两个文件并输出不同之处
- VS Code比较不同项目的两个文件差异
- 比较两个文件的不同之处 gvim -d
- linux下的comm和diff命令:用来比较两个文件的不同之处
- diff命令_Linux diff 命令用法详解:比较给定的两个文件的不同
- 用系统自带的命令比较两个文件的不同