【转】acm技巧 使用文件输入输出方便测试的方法

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);

也附加一个代码模版:

#include <stdio.h>
        
int main()
{
    freopen("slyar.in", "r", stdin);
    freopen("slyar.out", "w", stdout);
     
/* 中间按原样写代码,什么都不用修改 */
        

    fclose(stdin);
    fclose(stdout);
    return   0;

作者:syxChina
出处:http://syxchina.cnblogs.com
http://hi.baidu.com/syxcs123

本文版权归作者、博客园和百度空间共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,

时间: 2024-08-25 23:25:43

【转】acm技巧 使用文件输入输出方便测试的方法的相关文章

Python文件输入输出

http://blog.csdn.net/pipisorry/article/details/37769669python文件输入输出教程 python文件中的读入科学计数法的数字 float(word_dist) 皮皮blog python文件读取 内置函数open() 得到一个文件对象(file object):open(filename, mode='r') 函数参数 1. 模式mode: 模式 描述 r 以只读方式打开文件.文件的指针将会放在文件的开头.这是默认模式. rb 以二进制格式

LibreOJ #3.Copycat 文件输入输出

题目描述 这道题用于测试文件输入输出,请注意使用文件输入输出,而非标准输入输出. 输入一个正整数 aa,输出这个数 aa. 输入格式 第一行一个正整数 TT,表示有 TT 组测试数据.接下来 TT 行,每行一个正整数 aa. 输出格式 输出 TT 行,每行一个正整数 aa. 样例 样例输入 1 3 1 2 3 样例输出 1 1 2 3 样例输入 2 1 1000000000000000000000000000000000 样例输出 2 100000000000000000000000000000

Sdut2411 Pixel density 山东省第三届ACM省赛(输入输出字符串处理)

本文出处:http://blog.csdn.net/svitter 原题:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2411 题意:给你一个串,让你依据那个串来输出ppi.坑特别多.ppi的计算方法是dp / inches; dp = sqrt(wp*wp + hp * hp); 现在我来说说这个题目有多坑: 给你的串的格式是这样: name + inches+ "inches"

积累的VC编程小技巧之文件操作

1.删除文件夹 // 删除文件夹及其所有内容void CBaseDoc::RemoveFolder(const CString &strPathName){    CString path = strPathName;    if (path.Right(1) != _T("\\"))        path += _T("\\");    path += _T("*.*");    CFileFind ff;    BOOL res =

文件输入输出

文件输入输出的例子 以输出任意一组数的最大最小值,平均值为例 input:2 8 3 5 1 7 3 6 output:1 8 4.375 1重定向式 如果有#define LOCAL的时候执行#ifdef LOCAL 和#endif之间的语句, 没有定义LOCAL的时候不执行: 两个fopen加在main函数入口处,他将使得scanf从文件input.txt读入,printf写入文件output.txt #include <stdio.h>#define LOCAL int main() {

Syetem Verilog 文件输入输出系统任务及函数

[1]文件的打开.关闭 函数: 打开文件 $fopen 关闭文件 $fclose 语法: 打开文件 fd = $fopen(filename, type); 关闭文件 $fclose(fd); 说明: filename 为string类型,指定所需要打开的文件 type为打开文件方式,主要有: "r":以只读方式打开 "w":以写方式打开 "a":append,写入到打开文件的结尾 fd 为打开的文件的文件描述符,对改文件的所有操作通过对fd操作

【足迹C++primer】22、文件输入输出

文件输入输出 使用文件流对象 创建文件流对象时,我们可以提供文件名(可选).如果提供了一个文件名,则open会自动被调用: ifstream in(ifile); //构造一个ifstream并打开给定文件 ofstream out; //输出文件流未关联到任何文件 用fstream代替iostream& 首先这里有一个头文件和一个定义的文件要使用 Sales_data.h #ifndef SALES_DATA_H_INCLUDED #define SALES_DATA_H_INCLUDED #

讨论文件输入输出

输入不超过1000的若干整数,输出最大.最小.平均值: 关键在于,输入数字个数是不确定的 一,利用scanf函数的返回值就是返回输入数字的个数,的,这个特性判断输入终止. #include"iostream" #include"ctime" using namespace std; int main() { int x,n=0,min,max,s=0; while(scanf("%d",&x)==1){ s+=x; if(x<min

python 中文件输入输出及os模块对文件系统的操作

整理了一下python 中文件的输入输出及主要介绍一些os模块中对文件系统的操作. 文件输入输出 1.内建函数open(file_name,文件打开模式,通用换行符支持),打开文件返回文件对象. 2.对打开文件进行读取时,readline()与readlines()的区别在于是否一次性的读取所有的内容,并将每行的信息作为列表中的一个子项. 例如:文件test.txt中 1,3,4 2,35,6 分别用readline与readlines对其进行读取 r=file_object.readline(