[ACM训练] ACM中巧用文件的输入输出来改写acm程序的输入输出 + ACM中八大输入输出格式
ACM中巧用文件的输入输出来改写acm程序的输入输出
经常有见大神们使用文件来代替ACM程序中的IO,尤其是当程序IO比较复杂时,可以使自己能够更专注于代码的测试,而不是怎样敲输入。
C/C++代码中:
使用 stdio.h 中包含的另一个函数freopen函数
FILE * freopen ( const char * filename, const char * mode, FILE * stream );
文件名,打开的模式,文件指针,通常使用标准流文件(stdin/stdout/stderr)
因为文件指针使用的是标准流文件,因此我们可以不定义文件指针。
freopen("data.in", "r", stdin); //使用freopen()函数以只读方式r(read)打开输入文件data.in
freopen("data.out", "w", stdout); //使用freopen()函数以写入方式w(write)打开输出文件data.out
这样我们就不再需要修改scanf和printf,因为freopen()函数重定向了标准流,使其指向前面指定的文件。
最后只要使用fclose关闭输入文件和输出文件即可。
fclose(stdin);
fclose(stdout);
若要恢复句柄,可以重新打开标准控制台设备文件,只是这个设备文件的名字是与操作系统相关的。
DOS/Win:freopen("CON", "r", stdin);
Linux: freopen("/dev/console", "r", stdin);
//在程序目录下建立两个文件,data.in和data.out文件
- #include <stdio.h>
- int main()
- {
- freopen("data.in", "r", stdin);
- //freopen("data.out", "w", stdout);
- /* 中间按原样写代码,什么都不用修改 */
- fclose(stdin);
- //fclose(stdout);
- return ;
- }
- //提交代码时只需要注释掉这四句话即可。
而针对于C++的版本则可以这么来写:
- #include <fstream>
- streambuf *backup= cin.rdbuf(); //备份标准输入
- ifstream fin;
- fin.open("data.in");
- cin.rdbuf(fin.rdbuf());
- // ... cin will read from file
- cin.rdbuf(backup); // restore cin's original streambuf
不过此版本的代码不如上面的C版本的代码简洁,推荐使用C版本的代码!
最近也常使用Python来写一些在线编程的题目,这里也对应总结一下在Python中的处理方法:
pass
其实针对这里的重定向的意义在于方便对程序的输入做一个处理,故而只需要处理输入即可,输出直接输出到控制台上看起来更为直观。
下面对ACM中的相关输入输出格式做一个总结:
最常见的输入输出个是大致有八种:
1、有多组输入数据,但没有具体的告诉你有多少组,只是让你对应每组输入,应该怎样输出
C/C++中的处理情况 | Python中的处理情况 |
|
|
2、输入一个整数n,告诉我们接下来有n组数据,然后在输入数据的具体数据
C/C++中的处理情况 | Python中的处理情况 |
|
|
#pass
3、有多组输入数据,但是没有具体明确有多少组,但是明确当遇见0,0时结束
C/C++中的处理情况 | Python中的处理情况 |
4、有多组输入数据,但是没有具体明确有多少组,但是明确当遇见0,0时结束
C/C++中的处理情况 | Python中的处理情况 |
5、有多组输入数据,但是没有具体明确有多少组,但是明确当遇见0,0时结束
C/C++中的处理情况 | Python中的处理情况 |
6、有多组输入数据,但是没有具体明确有多少组,但是明确当遇见0,0时结束
C/C++中的处理情况 | Python中的处理情况 |
7、有多组输入数据,但是没有具体明确有多少组,但是明确当遇见0,0时结束
C/C++中的处理情况 | Python中的处理情况 |
8、有多组输入数据,但是没有具体明确有多少组,但是明确当遇见0,0时结束
C/C++中的处理情况 | Python中的处理情况 |
[ACM训练] ACM中巧用文件的输入输出来改写acm程序的输入输出 + ACM中八大输入输出格式的更多相关文章
- 在.net中读写config文件的各种方法
阅读目录 开始 config文件 - 自定义配置节点 config文件 - Property config文件 - Element config文件 - CDATA config文件 - Collec ...
- android 中获取视频文件的缩略图(非原创)
在android中获取视频文件的缩略图有三种方法: 1.从媒体库中查询 2. android 2.2以后使用ThumbnailUtils类获取 3.调用jni文件,实现MediaMetadataRet ...
- 在Shell中使用函数文件
需要编写一个较庞大的脚本时,可能会涉及许多函数.变量.这是通常建议将众多的函数.变量放入一个单独的脚本内.这样做的好处很明显,不用担心某个函数.变量是否已经被定义和使用,也不用频繁地定义.清除函数和变 ...
- java 从jar包中读取资源文件
在代码中读取一些资源文件(比如图片,音乐,文本等等),在集成环境(Eclipse)中运行的时候没有问题.但当打包成一个可执行的jar包(将资源文件一并打包)以后,这些资源文件找不到,如下代码: Jav ...
- [转载]解析WINDOWS中的DLL文件---经典DLL解读
[转载]解析WINDOWS中的DLL文件---经典DLL解读 在Windows世界中,有无数块活动的大陆,它们都有一个共同的名字——动态链接库.现在就走进这些神奇的活动大陆,找出它们隐藏已久的秘密吧! ...
- python中逐行读取文件的最佳方式_Drupal_新浪博客
python中逐行读取文件的最佳方式_Drupal_新浪博客 python中逐行读取文件的最佳方式 (2010-08-18 15:59:28) 转载▼ 标签: python ...
- (转)java 从jar包中读取资源文件
(转)java 从jar包中读取资源文件 博客分类: java 源自:http://blog.csdn.net/b_h_l/article/details/7767829 在代码中读取一些资源文件 ...
- Eclipse创建第一个Servlet(Dynamic Web Project方式)、第一个Web Fragment Project(web容器向jar中寻找class文件)
创建第一个Servlet(Dynamic Web Project方式) 注意:无论是以注解的方式还是xml的方式配置一个servlet,servlet的url-pattern一定要以一个"/ ...
- Apache 中httpd.conf文件配置详解(转载)
httpd.conf文件配置详解 Apache的基本设置主要交由httpd.conf来设定管理,我们要修改Apache的相关设定,主要还是通过修改httpd.cong来实现.下面让我们来看看htt ...
随机推荐
- React入门
一.引入Reactjs 方法一:直接下载相关js文件引入网页,其中react.js 是 React 的核心库,react-dom.js 是提供与 DOM 相关的功能,Browser.js 的作用是将 ...
- AlloyTouch插件
1.老样子引入js <script src="js/transform.js"></script> <script src="js/allo ...
- dell md3200i mdss (企业管理) 安装的那点事儿
首先获取安装包,解压后如图: 我是在windows 机上安装,所以执行windows 文件夹下的可执行程序: 双击红箭头文件,进行安装,步骤截图如下: 出现最后这个界面,就说明安装成功,直接重启系统就 ...
- cf591d
题意:给出船的最大速度v,起点,终点.风在前t秒是一个方向,t秒后就一直是第二个方向.两个方向已知. 船速永远大于风速.问船在自由掌握速度和行驶方向的情况下,最快多久到终点. 分析:首先排除一种方法, ...
- html的a标签display:block之后文字竖直居中
设置行高和a标签的高度一样就能居中,使用line-height
- 【日记】搭建一个node本地服务器
用node搭建一个本地http服务器.首先了解htpp服务器原理 HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端.HTTP协议采用了请求/响应模型 ...
- mysql安装时到最后start service时就不响应了的解决方法
- 序列化,反序列化和transient关键字
一.序列化和反序列化的概念 序列化:指把java对象转换为字节序列的过程. 反序列化:指把字节序列恢复为java对象的过程. 对象的序列化主要有两种用途: 1) 把对象的字节序列保存到硬盘上,通常存放 ...
- 用flex做垂直居中
<div class="flex-cont flex-centerbox"> <div class="center-cont"> < ...
- Docker上ubuntu新建用户的网络访问不通问题
背景 作为一个生命不息,折腾不止的码农.各种操作系统被我不知道搞崩了多少次,无数个夜晚连夜抢修数据,重装系统,那个累啊!! Option 1:备份.数据可以备份,配置可以备份,安装包可以备份.但是安装 ...