通过输入输出重定向和windows批处理文件比较程序输出和正确输出

前言

在刷OJ题目或者进行编程考试或比赛时,经常需要对编写好的程序进行测试,即运行编写好的程序,输入样例输入或者自己编写的输入数据,查看程序输出结果和样例输出或者正确输出是否一致,以此来测试自己编写的程序是否正确。这种方法有很多弊端,当有多组输入数据或程序运行结果多次错误时,需要多次复制粘贴输入数据,这个过程非常繁琐而且浪费时间;用肉眼检查程序输出和正确输出是否一致很容易出错,尤其是当输出数据非常多时。所以,我在这篇博客里介绍一下通过输入输出重定向和windows批处理文件比较程序输出和正确输出的方法,使用这种方法的前提有两点:

  1. 程序运行在windows操作系统下
  2. 程序可以生成一个exe可执行文件(例如C++程序就可直接生成一个exe文件;java不会直接生成一个exe可执行文件,就不能直接使用本博客提出的方法)

概念介绍

  1. 输入输出重定向:最常见的输入输出是标准输入输出,即读键盘输入、写屏幕。但当我们希望在文件中准备好输入数据,将输出或错误信息输入到另一个文件中时,就需要使用重定向。本博客介绍的方法就是将输入数据保存在一个input.txt文件中,运行程序时,让程序从input.txt文件读取数据,将程序输出数据保存在另一个output.txt文件中,从而就避免了多次复制粘贴输入数据的繁琐步骤。
  2. windows批处理文件:批处理,顾名思义就是进行批量的处理。批处理文件是扩展名为.bat 或.cmd的文本文件,包含一条或多条命令,由DOS或Windows系统内嵌的命令解释器来解释运行。本博客提出的方法使用的是windows批处理文件中的比较文件差异的fc命令。

方法具体步骤

第一步:编写程序,生成exe可执行文件

我们可以以一个读取两个int数据,输出这两个数据之和的简单程序作为例子,这个程序的C程序代码如下:

#include<stdio.h>
int main(){
	int a,b;
	scanf("%d%d",&a,&b);
	printf("%d",a+b);
} 

不妨将程序其命名为test.c,将test.c保存在一个名为test的文件夹下,运行后生成一个名为test.exe的文件,如下图所示:
通过输入输出重定向和windows批处理文件比较程序输出和正确输出

第二步:建立input.txt、correct.txt文件

新建三个txt文件input.txt、correct.txt,它们的作用分别为:

  1. input.txt:用于存放输入数据
  2. correct.txt:用于存放正确的输出数据
  3. output.txt:用于存放程序输出数据,这个文件不需要新建和删除,运行windows批处理文件后会自动生成

我们不妨在input.txt文件中写入1 2作为输入数据,在correct.txt写入3作为正确的输出数据,这时test文件夹下内容如下图:
通过输入输出重定向和windows批处理文件比较程序输出和正确输出

第三步:建立windows批处理文件

新建一个run.txt文件,在其中写入如下3行代码:

/*test与exe可执行文件名保持一致
input.txt表示输入数据存放的文件名
output.txt表示程序输出存放的文件名
correct.txt文件表示正确的输出数据存放的文件名
以上四个文件名均可根据实际情况修改*/
test < input.txt > output.txt//test程序从input.txt文件读取输入,程序输出到output.txt文件
fc output.txt correct.txt//fc是windows比较两个文件差异的命令
pause//运行pause命令,将显示消息:请按任意键继续,用于看清楚屏幕上显示的内容

run.txt文件内容如下:
通过输入输出重定向和windows批处理文件比较程序输出和正确输出
保存,然后将后缀名txt改为bat,这时整个test文件夹如下:
通过输入输出重定向和windows批处理文件比较程序输出和正确输出

测试

按上述步骤,整个准备工作就完成了,双击run.bat文件,就会出现下面的dos窗口:
通过输入输出重定向和windows批处理文件比较程序输出和正确输出
你会发现test文件夹下多了一个output.txt文件,这是test程序的输出数据,dos窗口显示output.txt文件和correct.txt文件没有差异,说明程序输出和正确输出是一致的,即对于当前输入数据来说,程序运行结果是正确的。
我们修改一下程序代码,如下:

#include<stdio.h>
int main(){
	int a,b;
	scanf("%d%d",&a,&b);
	printf("%d",a);
} 

重新编译生成exe文件,当输入数据仍为1 2,正确输出仍为3时,双击run.bat文件,dos窗口如下:
通过输入输出重定向和windows批处理文件比较程序输出和正确输出
output.txt文件和correct.txt文件出现了差异,说明程序出现了错误。

总结

以上就是我要介绍的通过输入输出重定向和windows批处理文件比较程序输出和正确输出的方法,这个方法相比于常见的重复复制粘贴输入数据的方法要简洁轻快许多,尤其在面对输入输出数据极多的情况下,其优势是非常明显的。

相关文章:

  • 2022-02-18
  • 2022-12-23
猜你喜欢
  • 2021-06-12
  • 2021-12-04
  • 2021-08-14
  • 2021-11-29
  • 2022-01-25
相关资源
相似解决方案