freopen(“in.txt“,“r“,stdin) 函数的用法
发布日期:2022-02-24 01:06:46
浏览次数:5
分类:技术文章
本文共 1993 字,大约阅读时间需要 6 分钟。
在做acm题目的过程中,我们需要在本地机器上调试。调试过程中,如果输入数据少还可以接受,但如果输入数据很庞大的话,我们就很难忍受一次又一次的重新输入和调试了。通过google,找到一种简便的方法,那就是freopen函数。
使用freopen函数可以解决测试数据输入问题,避免重复输入,不失为一种简单而有效的解决方法。 下面为函数的简介,详细可参见函数名:freopen
声明:FILE *freopen( const char *path, const char *mode, FILE *stream ); 所在文件: stdio.h 参数说明: path: 文件名,用于存储输入输出的自定义文件名。 mode: 文件打开的模式。和fopen中的模式(如r-只读, w-写)相同。 stream: 一个文件,通常使用标准流文件。 返回值:成功,则返回一个path所指定文件的指针;失败,返回NULL。(一般可以不使用它的返回值) 功能:实现重定向,把预定义的标准流文件定向到由path指定的文件中。标准流文件具体是指stdin、stdout和stderr。其中stdin是标准输入流,默认为键盘;stdout是标准输出流,默认为屏幕;stderr是标准错误流,一般把屏幕设为默认。通过调用freopen,就可以修改标准流文件的默认值,实现重定向。
在vs2005中有以下例子验证:
#include#include using namespace std; int main() { int a,b; freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取 freopen("out.txt","w",stdout); //输出重定向,输出数据将保存在out.txt文件中 while(cin>> a >> b) cout<< a+b <
freopen(“in.txt”,“r”,stdin)的作用就是把标准输入流stdin重定向到in.txt文件中,这样在用scanf或是用cin输入时便不会从标准输入流读取数据,而是从in.txt文件中获取输入。只要把输入数据事先粘贴到in.txt,调试时就方便多了。
类似的,freopen(“out.txt”,“w”,stdout)的作用就是把stdout重定向到out.txt文件中,这样输出结果需要打开out.txt文件查看。 需要说明的是: 1. 在调用freopen函数实现重定向时,路径名字一定要写正确。 2. 可以不使用输入重定向,仍然通过键盘输入,也可以不使用输出重定向,仍然在控制台查看输出,这都是可以的,看自己需求来定。 3. 这种方法适合在本地机器上调试用,程序调试成功后,提交到oj时不要忘记把与重定向有关的语句删除。其实这种问题,有些学校的OJ系统还是考虑到了这个问题,比如杭电的OJ系统,在FAQ里就有这个问题: Q:Is there any way to determine if my program is runned at Online Judge or not ?A:There is a conditional define of compiler called ONLINE_JUDGE. Example of using:
C/C++
#ifdef ONLINE_JUDGE
running on online judge
#else
you can do something here on your local computer
#endif
比如,杭电1000题我完全可以这样提交:
#include#include using namespace std;int main() { #ifdef ONLINE_JUDGE#else freopen("in.txt","r",stdin);#endif int a,b; while(cin>>a>>b) cout< <
在本地机器调试时,因为没有定义过ONLINE_JUDGE,所以会执行freopen(“in.txt”,“r”,stdin);方便本机上的调试,当提交到OJ上后,因为有了ONLINE_JUDGE的定义,所以跳过语句freopen(“in.txt”,“r”,stdin); 从 int a,b;处开始执行。经测试,AC。
转自:https://blog.csdn.net/Xylon_/article/details/81257268
转载地址:https://blog.csdn.net/weixin_45877540/article/details/108004770 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年03月31日 07时26分02秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
java线程管理利器:java.util.current的用法举例
2019-04-25
native2ascii.exe的使用
2019-04-25
docker-machine的安装
2019-04-25
用docker-machine创建虚拟主机
2019-04-25
spring mvc 4 + swagger2
2019-04-25
Jenkins之持续构建
2019-04-25
sonarqube 启动不了,异常提示:远程主机强迫关闭了一个现有的连接。
2019-04-25
jenkins 参数化构建作业
2019-04-25
容器div内容超出后,自动出现滚动条
2019-04-25
RDLC报表相关
2019-04-25
RDLC报表打印尺寸不匹配的问题
2019-04-25
Dev GridControl控件行拖拽实现
2019-04-25
GridControl分页
2019-04-25
DevExpress gridcontrol 分组显示
2019-04-25
违反并发性: UpdateCommand影响了预期 1 条记录中的 0 条
2019-04-25
C#文件相关操作
2019-04-25
C# INI文件操作
2019-04-25
Codeforces Round #726 (Div. 2)
2019-04-25
springboot 发送,简单,html格式,带本地附件,带远程附件邮件详解
2019-04-25