一.freopen的使用(C/C++)

函数原型: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("data.in", "r", stdin); //重定向标准输入为data.in文件

freopen("data.out", "w", stdout); //重定向标准输出为data.out文件

[cpp] view plaincopy print?
  1. // 程序功能是统计输入的序列串中的最大值、最小值和序列串的平均值
  2. #define LOCAL
  3. #include <stdio.h>
  4. // #include <iostream>
  5. #define INF 1000000000
  6. // using namespace std;
  7. int main (void) {
  8. #ifdef LOCAL
  9. freopen ("data.in", "r", stdin);
  10. freopen ("data.out", "w", stdout);
  11. #endif
  12. int x, n = 0, min = INF, max = -INF, s = 0;
  13. while (scanf ("%d", &x) == 1) {
  14. // while (cin >> x) {
  15. s += x;
  16. if (x < min) min = x;
  17. if (x > max) max = x;
  18. //printf ("x = %d, min = %d, max = %d\n", x, min, max);
  19. ++n;
  20. }
  21. printf ("%d %d %.3f\n", min, max, (double)s/n);
  22. // cout << min << " " << max << " " << (double)s / n << endl;
  23. return 0;
  24. }

二.文件流使用(C)

fopen函数

函数原型:FILE * fopen(const char * path, const char * mode);

头文件: stdio.h

参数:

path: 文件名。

mode: 文件打开的模式。

返回值:成功,则返回一个path所指定文件的指针;失败,返回NULL。

[cpp] view plaincopy print?
  1. // 程序功能是统计输入的序列串中的最大值、最小值和序列串的平均值
  2. #include <stdio.h>
  3. #define INF 1000000000
  4. int main (void) {
  5. FILE *fin, *fout;
  6. fin = fopen ("data.in", "rb");
  7. fout = fopen ("data.out", "wb");
  8. int x, n = 0, min = INF, max = -INF, s = 0;
  9. while (fscanf (fin, "%d", &x) == 1) {
  10. s += x;
  11. if (x < min) min = x;
  12. if (x > max) max = x;
  13. //printf ("x = %d, min = %d, max = %d\n", x, min, max);
  14. ++n;
  15. }
  16. fprintf (fout, "%d %d %.3f\n", min, max, (double)s/n);
  17. fclose (fin);
  18. fclose (fout);
  19. return 0;
  20. }
 

三.C++中文件流的使用

在C++中文件和string都可以转换为对应的输入输出流,由此可以简单对文件和string对象进行操作。具体的操作为:
1. 创建对应的流对象(文件流、String流,如:ifstream,ofstream,istringstream,ostringstream等)
2. 用对应的文件名(或string)初始化该流对象
经过上面两步,就可以很简单的对对应的流对象进行操作,跟标准输入输出流的操作方式一致(与cin、cout的使用方式一致)
[cpp] view plaincopy print?
  1. #include <iostream>
  2. #include <fstream>
  3. #define INF 1000000000
  4. using namespace std;
  5. int main (void) {
  6. ifstream fin("data.in");
  7. ofstream fout ("data.out");
  8. int x, n = 0, min = INF, max = -INF, s = 0;
  9. while (fin >> x) {
  10. s += x;
  11. if (x < min) min = x;
  12. if (x > max) max = x;
  13. //printf ("x = %d, min = %d, max = %d\n", x, min, max);
  14. ++n;
  15. }
  16. fout << min << " " << max << " " << (double)s/n;
  17. fout.close ();
  18. fin.close ();
  19. return 0;
  20. }
 
类继承图:
 

 

转载于:https://www.cnblogs.com/fire909090/p/8134348.html

代码中的输入输出(重定向、文件流C/C++)相关推荐

  1. c语言 文件流 输出数据类型,总结C++中输入输出流及文件流操作

    当程序员在编写程序的时候,最不可分割的是对文件做的相应的操作,总结C++中输入输出流及文件流操作大家都了解吗?想要了解的朋友,就随爱站技术频道小编来看看吧. 1.流的控制 iomanip        ...

  2. C++中rdbuf()简介及文件流的概念

    2019独角兽企业重金招聘Python工程师标准>>> C++中rdbuf()简介及文件流的概念 Name:qianghaohao #include <cstring> ...

  3. java中的常用的文件流_Java 基础(四)| IO 流之使用文件流的正确姿势

    image.png 一.什么是 IO 流? 想象一个场景:我们在电脑上编辑文件,可以保存到硬盘上,也可以拷贝到 U 盘中.那这个看似简单的过程,背后其实是数据的传输. 数据的传输,也就是数据的流动.既 ...

  4. JAVA设置流中当前位置_java文件流的问题!急

    朋友你好,用使用 javadoc 标记可以做到.具体说明如下:: javadoc 标记是插入文档注释中的特殊标记,它们用于标识代码中的特殊引用.javadoc 标记由"@"及其后所 ...

  5. 如何在自己的代码中实现分享视频文件或者是图片文件到微信 QQ微博 新浪微博等!!!...

    首先在文档第一句我先自嘲下 , 我是大傻逼, 弄了两天微信是视频分享,一直被说为啥跟系统的相册分享的不一样,尼玛!!! 这里来说正文,我这里不像多少太多,大家都是程序猿,具体的阔以看代码. 搞代码之前 ...

  6. python代码中使用pip安装文件

    以安装pandas为例: from pip._internal import main# pip install pandas main(['install','pandas'])# pip inst ...

  7. Java输入输出之文件字符IO流之文件内容加密

    目录 任务描述 相关知识 FileReader (文件字符输入流) FileReader 的构造方法 FileReader 的方法 FileWriter (文件字符输出流) FileWriter 构造 ...

  8. flash 嵌入html代码,flash嵌入html在html网页代码中嵌入Flash文件的解决方案(下).doc...

    flash嵌入html在html网页代码中嵌入Flash文件的解决方案(下).doc flash嵌入 在 网页代码中嵌入Flash文件的解决方案(下) 在 代码中嵌入Flash文件一直都是广大web爱 ...

  9. 关于读入带空格的字符串与输入输出重定向

    一.读入带空格的字符串 由于NOIP官方开始使用C++14编译器,C语言中用于读取带空格字符串的gets()函数已经不可以再用了.作为替代,有以下方法. cin.getline()函数. 函数格式: ...

最新文章

  1. 姚班三兄弟3万块创业八年,旷视终冲刺港股
  2. 在python中排序元组
  3. mysql设计与实现_mysql设计与开发
  4. Java与C#个人之比较
  5. 关于高考报志愿的一些规划建议
  6. c语言程序设计报告数制转换,数制转换-C语言程序设计课程设计报告.docx
  7. c#中高效的excel导入oracle的方法(转)
  8. C++中栈内存和堆内存
  9. 在web项目启动时,使用监听器来执行某个方法
  10. 关于计算机航天生物的想像作文,未来的航天员想象作文
  11. FastDFS搭建文件服务器
  12. java 开发电商平台,JAVA项目实战开发电商项目案例(一)前后端项目分离
  13. windows7家庭版,专业版,旗舰版,企业版版本区别
  14. 2021年中国传统文化锦集(中国人必须了解的)
  15. 图像分辨率和图像大小的计算
  16. rimraf : 无法加载文件 C:\Users\Admin\AppData\Roaming\npm\rimraf.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅
  17. 详解 Java 日期与时间
  18. windows下gromacs中文教程(simulate chain A of insulin (PDB ID: 1ZNI).
  19. Android6.0动态壁纸,M Launcher下载-M桌面-安卓6.0桌面 v1.4.3_手机乐园
  20. 麒麟子Javascript游戏编程零基础教程一:序言

热门文章

  1. 柳进军 | 城市大脑的逻辑模型
  2. 人工智能功能级别与框架|《远望译品》
  3. Science:人工智能的发展离不开神经科学,先天结构或是下一个方向
  4. open AI 在DOTA 5v5 比赛中战胜职业选手
  5. 北京大学纳家勇治研究组在《美国国家科学院院刊》发文阐明时序记忆的神经机制
  6. 从 ACM 训练领悟坚持之道
  7. 面试官问我:什么是高并发下的请求合并?
  8. CSDN下载资源+全领域电子书+程序员提升课,领取这些不香吗?
  9. 如何用Dart写一个单例
  10. windows7、windows 2008和windows 2008 R2 的系统封装介绍