1. 引言

今天考试遇到一个提交答案题,已经给出了答案检验器(已经编译了的,没有源码),但是手动输命令检验答案文件效率很低,我们最好是让检验器本来输出到屏幕的东西输出到文件,方便我们写程序自动检验。

但是我们没有检验器源码,没法freopen怎么办呢QvQ

其实是kb提出了这个问题啦,下面我就来讲一下linux(ubuntu)下的重定向输入/输出的方法。

2. 输出重定向

现在我们有个已经编译好了的,普通的helloworld的程序:

假如我们的可执行文件名叫做hello。

现在我们要不用freopen将helloworld!这个字符串输出到out.txt中。

那么我们在终端执行命令:

怎么样?是不是很神奇?QvQ

而且就算原本没有out.txt这个文件也是没关系的,它会自己帮你生成。

一般这样就能满足在OI中的需求了,但加入你真的要多次输出累加起来,比如运行两次hello,然后out.txt里就有两行helloworld!的话,你就执行两遍:

也就是多了一个>符号

这样会让你后面的输出接到原本文件的末尾。

3. 输入重定向

现在问题又来了,我们有一个普通的a+b问题的代码:

假设文件名叫做aplusb

假如我们要从in.txt读入的话就执行命令:

很方便吧?= ̄ω ̄=嘻嘻……

再比如我们要从in.txt读入,将答案输出到out.txt:

QvQ就是酱紫啦!