OJ上使用freopen的办法

众所周知,本地调试代码每次粘贴样例非常麻烦,因此我们可以使用 f r e o p e n freopen freopen大法重定向输入输出,大多数时候都会用上重定向输入:
freopen("in.txt", "r", stdin);
然后你就能够把数据放到 i n . t x t in.txt in.txt里面,输入会每次去这里面读。
这个操作有两个好处:
1. 不用自己频繁输入相同的样例,尤其是CV上交后,粘贴板发生变化的情况。
2. 输入和输出达到分离,更容易发现问题所在

当然这都是为了节省时间。

但是我们会发现一个bug,就是每次上交到OJ上的时候,都要把 f r e o p e n freopen freopen删掉!OJ上可不是从 i n . t x t in.txt in.txt里读的可能是从其他文件读的,如果忘记这个操作就会直接WA,毕竟没有输入了嘛,一来一回也挺麻烦,这个时候我们就引入了一个神奇的预编译指令:

	#ifndef ONLINE_JUDGE
		freopen("in.txt", "r", stdin);
	#endif // !ONLINE_JUDGE

f r e o p e n freopen freopen外面套一个infdef预编译指令,如果ONLINE_JUDGE被没被定义的话才会编译中间的代码,然后在线OJ都会定义这个变量。结果就是,在本地我们可以快乐地freopen,提交上去不会编译这条指令。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值