[转]C语言文件输入/输出ACM改进版(freopen函数)
C语言文件输入/输出ACM改进版(freopen函数)
文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。
昨天发了一篇《C语言 使用文件输入/输出数据》,使用的是最普通的文件输入/输出方法,Felix大牛随后给了一种更简单的改进方法,在ACM中应用很广,而且超赞,现在来介绍一下。
这次用到的文件打开函数不再是fopen,而是stdio.h中包含的另一个函数freopen
FILE * freopen ( const char * filename, const char * mode, FILE * stream );
【参数说明】
filename: 要打开的文件名
mode: 文件打开的模式,和fopen中的模式(r/w)相同
stream: 文件指针,通常使用标准流文件(stdin/stdout/stderr)
【使用方法】
因为文件指针使用的是标准流文件,因此我们可以不定义文件指针。
接下来我们使用freopen()函数以只读方式r(read)打开输入文件slyar.in
freopen("slyar.in", "r", stdin);
然后使用freopen()函数以写入方式w(write)打开输出文件slyar.out
freopen("slyar.out", "w", stdout);
接下来的事情就是使用freopen()函数的优点了,我们不再需要修改scanf和printf,而是维持代码的原样就可以了。因为freopen()函数重定向了标准流,使其指向前面指定的文件,省时省力啊,赞...
最后只要使用fclose关闭输入文件和输出文件即可。
fclose(stdin);
fclose(stdout);
若要恢复句柄,可以重新打开标准控制台设备文件,只是这个设备文件的名字是与操作系统相关的。
DOS/Win:
freopen("CON", "r", stdin);
Linux:
freopen("/dev/console", "r", stdin);
也附加一个代码模版:
1 |
#include <stdio.h> |
PS.刚才发现一个问题,就是在用C-free编译含有文件操作的源码时,必须要将fopen或者freopen放到所有变量定义的下面,否则会编译错误...囧
[转]C语言文件输入/输出ACM改进版(freopen函数)的更多相关文章
- C语言文件输入/输出 ACM改进版(用freopen函数方便检验)
这次用到的文件打开函数不再是fopen,而是stdio.h中包含的另一个函数freopen FILE * freopen ( const char * filename,const char * mo ...
- C/C++-标准输入/输出重定向为文件输入/输出
/* Time: 2017-02-22 11:11:15 Describe: C++程序将标准输入/输出重定向为文件输入/输出. */ #include <iostream> #inclu ...
- C Primer Plus之文件输入/输出
文件 一个文件通常就是磁盘上的一段命名的存储区.但对于操作系统来说,文件就会更复杂一些.例如,一个大文件可以存储在一些分散的区段中,或者还会包含一些使操作系统可以确定其文件类型的附加数据. C将文件看 ...
- 【C语言学习】《C Primer Plus》第13章 文件输入/输出
学习总结 1.文件函数原型1: FILE* fopen(char *filename, char *openmode); //打开文件,返回文件指针 filename:文件名,更确切地说,是包含文件 ...
- 第 13 章 文件输入/输出 (标准I/O)
/*-------------------------- count.c -- 使用标准 I/O --------------------------*/ #include <stdio.h&g ...
- C语言 文件操作5--文件的常用函数
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> //stdin:标准输入文件指针,系统 ...
- gcc 头文件是用户应用程序和函数库之间的桥梁和纽带 功能的真正逻辑实现是以硬件层为基础
gcc GCC, the GNU Compiler Collection - GNU Project - Free Software Foundation (FSF) http://gcc.gnu.o ...
- C语言数据输入与输出
1 概论 C语言提供了跨平台的数据输入输出函数scanf()和printf()函数,它们可以按照指定的格式来解析常见的数据类型,例如整数,浮点数,字符和字符串等等.数据输入的来源可以是文件,控制台以及 ...
- A Byte of Python 笔记(10)输入/输出:文件和储存器
第12章 输入/输出 大多数情况下,我们需要程序与用户交互.从用户得到输入,然后打印一些结果. 可以分别使用 raw_input 和 print 语句来完成这些功能.对于输出,可以使用多种多样的 s ...
随机推荐
- XE7 - 升级及初步使用
春节没抢到回家的票,正好有时间把Delphi2010升级到了XE7. 用了快一个月了,今天算是补记. 安装包用了lsuper大侠整理的lsuper.XE7.Update1.v10.1.拜谢!比较顺利的 ...
- JS面向对象的学习
1.面向对象 var arr = new Array(); //[] //我们把系统自带的对象,叫做系统对象 var arr = []; arr.number = ; //对象下面的变量:叫做对象的属 ...
- MySQL基础之第18章 性能优化
18.1.优化简介 SHOW STATUS LIKE ‘value’;connections 连接数uptime 启动 ...
- C# "error CS1729: 'XXClass' does not contain a constructor that takes 0 arguments"的解决方案
出现这种错误的原因时,没有在子类的构造函数中指出仅有带参构造函数的父类的构造参数. 具体来讲就是: 当子类要重用父类的构造函数时, C# 语法通常会在子类构造函数后面调用 : base( para_t ...
- Android ANR分析及解决方案
一:什么是ANR ANR:Application Not Responding,即应用无响应. ANR定义:在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个 ...
- 使用 Google Fonts 为网页添加美观字体
前言 文字是网页中很重要的组成部分.为文字选择一个合适的字体,能够更好的展现一个网站的个性,表达所要传递的信息,同时吸引用户来产生兴趣. 说到字体,我们首先会想到 CSS 里面的 font,例如: & ...
- Mac OS 10.8 中的 OpenCV 开发环境设置
一.编译OpenCV 要在Mac OS上使用OpenCV,需要自己编译源代码.操作过程如下: 1)从http://www.cmake.org下载cmake 2.8安装包. 2)安装cmake 2.8. ...
- _margin和margin的区别
_margin和margin的区别 _margin和margin的区别 Question: margin:15px 300px 0px 100px; height:72px; width:188px; ...
- 解决Socket.IO在IE8下触发disconnect时间过长
本文地址: http://www.cnblogs.com/blackmanba/p/solve-socketIO-IE8-emit-disconnect-too-long.html或者http://f ...
- QS之Intro
公司里用Questa Sim做仿真,其实跟ModelSim差不多,总结常用的命令如下. 1 启动 vsim -gui 2 编译 -- VCOM vcom [-2008 | -2002 | -93 | ...