我们在 VC6.0 等编译器编译运行程序后,会用键盘输入一些数据对程序功能进行检查。而众所周知,OJ是自动判题平台,不会有人在电脑前输入测试数据,故提交程序中的scanf接受的肯定不是从键盘输入的数据。那么OJ系统如何将本应该用键盘输入的数据传入程序并完成评判呢?以下是我猜想的一种可能方法。
下面这个程序,假设是 HDU1089 的标准程序,我们管它叫 “std.cpp” :
#include <stdio.h>
int main()
{
int a,b;
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
while(scanf("%d%d",&a,&b)!=EOF){
printf("%d\n",a + b);
}
return 0;
}
其中的 freopen() 称为重定向函数(参看词条),它包含在 stdio.h 中。
</