简单的对拍程序

10175101282 edited 4 年,11 月前

感觉在代码里加freopen太麻烦了 经常忘记删然后交上去RTE一发 ,不如写个批处理来重定向输入输出。

首先需要这样一个文件夹,AC放标程,WA放错误的程序,记得编译成exe。


然后我们右键编辑这个bat文件(不是双击),插入如下代码:

@echo off
WA.exe < Input.txt > WA.out
AC.exe < Input.txt > AC.out
fc WA.out AC.out
pause

bat代码解释(可跳过):
第一行隐藏回显,可加可不加,加了好看一点而已。
二三行将Input重定向至exe的输入并将输出重定向至.out文件(类似linux操作)。
第四行fc(file compare)比较两个输出文件,如果没有差异输出“找不到差异”,否则分别输出文件内容。
最后的pause是为了程序执行完后不立即关闭,便于查看结果。


双击运行Comp.bat即可。
效果:

于是终于不用freopen了~

Comments

ultmaster

可以使用

#ifndef ONLINE_JUDGE
freopen("...", "r", stdin);
#endif

在 OJ 上由于定义了 ONLINE_JUDGE 宏,freopen 自动被注释。

zerol

补充一下 linux 下的脚本

#!/usr/bin/env bash
g++ -o r main.cpp -O2 -std=c++11
g++ -o std std.cpp -O2 -std=c++11
while true; do
    python gen.py > in
    ./std < in > stdout
    ./r < in > out
    if diff stdout out; then
        printf "OK\n"
    else
        printf "GG\n"
        exit 0
    fi
done
10175101282

%, 感谢补充!