freopen重定向函数
 
通常在设计好算法和程序后,要在调试环境(例如VC等)中运行程序,输入测试数据,当能得到正确运行结果后,才将程序提交到oj中。但由于调试往往不能一次成功,每次运行时,都要重新输入一遍测试数据,对于有大量输入数据的题目,输入数据需要花费大量时间。使用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 用法
函数原形 FILE *freopen(char *filename, char *type, FILE *stream);
第一个参数 filename 是文件名
第二个参数一般是 "r" 或 "w", "r" 代表是从文件读入,"w"代表是写
入到文件
第三个参数一般是 stdin 代表文件读入, 和第二个参数 "r" 连用
stdout 代表写入到文件,和 第二个参数 "w" 连用
用法举例
freopen("a.txt","r",stdin ); 执行这条语句后, 程序中下面所有的
读入将从文件 "a.txt" 中读入
如:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char ch;
freopen("a.txt","r",stdin);

while( ch= getchar()!= '/n' )
putchar(ch);

return 0 ;
}
对于这个程序, 那么在控制台下的读入都无效, 他只会从文件 
"a.txt"中读入. 运行这个程序前你得先建一个文件 a.txt , 与你的代码
生成的 .exe 文件在同一文件夹中。大家可以试试看。
如果再加一个语句, 程序变为
#include <stdio.h>
#include <stdlib.h>
int main()
{
char ch;
freopen("a.txt","r",stdin);
      freopen("b.txt","w",stdout);

while( ch= getchar()!= '/n' )
putchar(ch);

return 0 ;
}
程序不会输出任何东西在控制台下, 而把所有输出输出到文件 "b.txt" 中
这个 b.txt 文件可以先不建, 程序会自动在与 .exe 文件相同目录下建立
另外还有两个问题
1. 如何判断文件是否打开了
可以直接 if( freopen("a.txt","r",stdin)== NULL ) return false;
或      if( freopen("b.txt","w",stdout)== NULL ) return false;
表示没有打开
2. 如何使流重新回到控制台上
如果你不想输入或输出到文件了,就加上一句
freopen("CON","r",stdin ); 对应输入
freopen("CON","w",stdout); 对应输出
注意的问题, 因为参数都是 c_字符串, 故不能把 c++ 里面的 string 类对
象作为参数传进去
比如 string str= "a.txt";
你不能这样写 freopen( str, "r", stdin );
可以先把 string 类对像化成 c_字符串, 就用 c_str() 函数

上面的可以这样写 freopen( str.c_str(), "r", stdin );

转至:http://blog.csdn.net/hackerain/article/details/6040594

freopen重定向函数相关推荐

  1. 文件重定向函数freopen

    头文件:stdio.h FILE *freopen( const char *filename, const char *mode, FILE *stream ); 参数说明: filename:需要 ...

  2. linux c dup dup2 重定向函数简介

    dup()函数和dup2()函数书上在文件操作那一章,已经讲过了,这周看重定向这块,发现它挺重要,就再看了回,记录下. 1. dup函数 头文件及函数定义: #include <unistd.h ...

  3. Visual Studio解决freopen等函数报错函数安全问题

    VS中使用freopen.fopen.sprintf等函数是会出现安全问题: error C4996: 'xxxxx': This function or variable may be unsafe ...

  4. Linux:dup/dup2 文件描述符重定向函数(有图有代码有真相!!!)

    一.dup/dup2 有时我们希望把标准输入重定向到一个文件,或者把标准输出重定向到一个网络连接.系统调用dup和dup2能够复制文件描述符.dup返回新的文件文件描述符(没有用的文件描述符最小的编号 ...

  5. php重定向函数是什么,php中url重定向的方法

    一.使用header()函数 PHP的HTTP相关函数提供了一个header()函数,首先要清楚,header()函数必须放在php程序的开头部分,而且之前不能有另外的 header() 函数或者 s ...

  6. php重定向函数是什么,php重定向三方法

    今天没事研究一下php的重定向,感觉有点用处,权当笔记了. 方法一:使用php的header() 场景1:从index.php重定向到index2.php 创建两个文件,分别为index.php和in ...

  7. 【VS Code使用freopen重定向后system(“pause“)失效的解决方案】

    在使用vscode时,如果想让vscode显示外外部独立终端(命令提示符上),运行窗口会一闪而过,需要使用getchar()或者是system("pause")来使控制台停留在运行 ...

  8. 打开流 fopen 、freopen和fdopen函数

    打开流 fopen .freopen和fdopen函数 转载 2015-12-21 14:13:07 fopen .freopen和fdopen函数作用都是打开一个标准I/O流的,但是它们有一些略微的 ...

  9. C/C++中的freopen()函数使用详解

    C/C++重定向 标准输入输出 的库函数. 所谓重定向输出,就是可以把原本只是输出在控制台的字符,输出到你指定的路径文件中.(输入类似,就是从指定的文件中读取,而不是读取在控制台中的输入.)重定向函数 ...

最新文章

  1. “23岁本科生发14篇SCI”,文章被学校官网悄悄删了,你怎么看?
  2. 技术人员,为什么会苦逼
  3. 发现自己竟然有点恐高,郁闷
  4. 【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | 反射获取 IActivityManager 对象 )
  5. 中国硫酸氧钒市场发展战略与投资可行性分析报告2022-2028年版
  6. 文件上传与下载----SpringMVC
  7. 第九届(2018)蓝桥杯 山东省赛解题报告(题目+分析+代码)
  8. C++ Vector详解
  9. pygame.error: font not initialized的解决及init()到底干了什么
  10. python实现给定一个列表和数字,在列表找到和为该数字的元素返回下标
  11. 网络七层协议和TCP/IP五层协议
  12. php文件如何转为ppt,pdf文件转换成ppt文件 pdf如何转为ppt
  13. 德勤咨询:2021年度企业人工智能应用现状报告(第4版)
  14. python数据库操作orm_python【第十二篇下】操作MySQL数据库以及ORM之 sqlalchemy
  15. Google Gson 简介
  16. tfp.distributions.Multinomial().sample()用法简介
  17. 商品详情页中特别注意的三件事
  18. 9*9数独游戏C++开发
  19. png转pdf, pdf转png
  20. 程序员面试金典 - 面试题 10.11. 峰与谷

热门文章

  1. TextView(文本框)详解
  2. 获取1688app上原数据 API
  3. Windows——文件共享
  4. MFC程序调用Windwos CMD命令打印图片 MFC 控件显示层次调整,即(叠放次序)和绘制遮挡置于底层顶层灰色
  5. 键入网址再按下回车,后面究竟发生了什么?
  6. 用Python爬取历年基金数据
  7. PDMS二次开发(一)——PML类型程序类型与概念
  8. PHP RSA加密解密
  9. org.springframework.core.type.AnnotationMetadata.introspect(Ljava/lang/Class;)Lorg/springframework/c
  10. 【图像重建】基于matlab布雷格曼迭代算法集合ART算法CT图像重建【含Matlab源码 1905期】