众所周知,freopen是一个非常好用的文件输入输出的函数,在各种信息学竞赛中都会有所使用。
至于它的原理嘛。。。。。。本蒟蒻也不知道。
所以本蒟蒻只能在此浅谈其用法.

1.最简单的用法

我这里指的最简单用法,就是它在竞赛中的常用用法了
一句
freopen("文件名.in","r",stdin);
freopen("文件名.out","w",stdout);
敢问天下谁oier不识君?
然而,它的拓展,也很简单的。。。

2. 稍加拓展

很简单
分解其本质,不过是:
freopen("文件名.拓展名","操作种类(我反正只知道有r&w)","标准输入输出");
所以,最方便的玩意儿,就是在out里面的拓展名动手脚,
如果您知道,c++文件拓展名为.cpp,c文件为.c等,那就很方便了;
如果我们编一个c++程序,然后拓展名改为.cpp.
那么很神奇的一幕发生了,这个文件一运行就会产生另一个cpp文件.
相当于这个文件诞生了另一个文件。
甚至还能把新文件中也加这种东西。
然后在再生出一个。。。
是不是很神奇???
而且很多Oier认为freopen只能放在文件的最前面,其实不然,freopen的位置是十分灵活的,在freopen语句执行过后,输出才会进入文件中,之前的输出仍然会在控制台中,输入也是同理的。而且一个程序中可以出现两个freopen in&out。
比如我们建两个in文件,将num1.in编辑为"Hello!",num2.in编辑为"World",那么以下代码执行会是这样。。。`freopen("num1.in","r",stdin)`gets(a);puts(a);`freopen("num2.in","r",stdin)`gets(b);puts(b);
这样a中会是Hello!,b中会是World,因为puts的自动换行,所以输出会是:
Hello!
World
不会有什么冲突。

3. 优劣势

比起其他较为简单的文件输入输出来说,freopen有优有劣
就说另一个代表性的文件输入输出fin&fout,fin&fout的主要优势在于它可以混用fin,cin,fout,cout,不用刻意控制它的位置,更加灵活便利
虽说fout&fin更加的灵活,但是freopen也胜在方便,能够用更多方式读入(scanf.getchar.getch.gets...),所以也有不少优势。
所以这两种输入输出流有优有劣,用起来还是要根据情况而定。

4.博主对fropen的使用

本蒟蒻刚刚写了一个比较愚蠢的小程序,主要是演示一下fropen在分支结构中的灵活运用,应该能给您一点小小的启发和更深的理解
PS:本程序产物请勿用于坑人...
#include<bits/stdc++.h>
#include <conio.h>
#include <windows.h>
using namespace std;
int main()
{system("color f0");//初始化控制台模样system("title 关机软件工厂");//同上关机软件工厂char c; cout<<"欢迎来到关机软件工厂,这里有各种各样的关机bat文件"<<endl;Sleep(1000) ;//暂停1秒,主要是让这个软件变得不那么突兀怪异cout<<"建议您作死前先制造一个放弃关机的文件,不然......后果自负"<<endl; Sleep(1000);cout<<endl<<"---------按键继续----------" ;c=getch();//读取(getch是不带回显,不带缓冲区的单个字符读入。system("cls"); //清屏cout<<"请问您需要什么关机文件?"<<endl<<endl; Sleep(1000) ;cout<<"请输入对应编号"<<endl<<"1.定时关机"<<endl<<"2.立即关机(慎用!!!)"<<endl<<"3.放弃关机"<<endl<<"4.注销"<<endl<<"5.重启(慎用,too!!!)"<<endl<<"其他.我不需要,谢谢";c=getch();//同上system("cls");//同上int a;if(c=='1'){cout<<"请问您需要定时多久关机?(请输入秒数)";cin>>a;system("cls");cout<<"搞定,您可以在当前文件夹下找到定时关机文件,再见" ;//因为这是在fropen之前的输出,所以会输出在控制台而不是文件中。freopen("定时关机.bat","w",stdout);//众所周知,可以用记事本输入一个shutdown在改变拓展名为bat改为批处理文件,然后便可实现关机。cout<<"shutdown -s -t "<<a;Sleep(1000) ;return 0;}if(c=='2') {system("cls");cout<<"搞定,您可以在当前文件夹下找到立即关机文件,再见";freopen("立即关机.bat","w",stdout);cout<<"shutdown -s";Sleep(1000) ;return 0; }if(c=='3') {system("cls");cout<<"搞定,您可以在当前文件夹下找到放弃关机文件,再见";freopen("放弃关机.bat","w",stdout);cout<<"shutdown -a";Sleep(1000) ;return 0; }if(c=='4') {system("cls");cout<<"搞定,您可以在当前文件夹下找到注销文件,再见";freopen("注销.bat","w",stdout);cout<<"shutdown -l";Sleep(1000) ;return 0; }system("cls");cout<<"好的,下次见!!!";Sleep(1000) ;return 0;
}

浅谈freopen用法相关推荐

  1. 浅谈SpannableString用法

    SpannableString其实和String很相似,都是用来表示一个字符串的,不同之处在于前者可以设置字符串各种形式风格的显示,重要的是可以指定设置的区间,也就是为字符串指定下标区间内的子字符串设 ...

  2. 浅谈Linux中ldconfig和ldd的用法

    ldd 查看程序依赖库 ldd 作用:用来查看程式运行所需的共享库,常用来解决程式因缺少某个库文件而不能运行的一些问题. 示例:查看test程序运行所依赖的库: /opt/app/todeav1/te ...

  3. python竞赛_浅谈Python在信息学竞赛中的运用及Python的基本用法

    浅谈Python在信息学竞赛中的运用及Python的基本用法 前言 众所周知,Python是一种非常实用的语言.但是由于其运算时的低效和解释型编译,在信息学竞赛中并不用于完成算法程序.但正如LRJ在& ...

  4. php字面量,浅谈js之字面量、对象字面量的访问、关键字in的用法

    一:字面量含义 字面量表示如何表达这个值,一般除去表达式,给变量赋值时,等号右边都可以认为是字面量. 字面量分为字符串字面量(string literal ).数组字面量(array literal) ...

  5. 浅谈verilog hdl中parameter的用法

    浅谈verilog hdl中parameter的用法 parameter 1.parameter参数使用 事例1: 事例2: 事例3 事例4 2.defparam使用 事例5 3.parameter与 ...

  6. css inport作用,浅谈css和@import区别及用法详解

    下面小编就为大家带来一篇浅谈css和@import区别及用法.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 css和@import都是调用外部样式表的方法. 一.用法 ...

  7. 浅谈C++中memset函数的用法

    浅谈C++中memset函数的用法 memset函数的头文件是cstring, 实际上是一个字符串处理函数,但常用于给静态数组(不是new出来的数组)赋特定初值. #include<cstrin ...

  8. float在html语言中的用法,[html5入门-4]浅谈html5中float的用法

    html5的文档布局方式一般有流式布局,浮动布局,固定布局和弹性布局等几种方式,本文主要浅谈一下浮动布局在html5中的用法. 一.float定义 浮动的框可以向左或向右移动,直到它的外边缘碰到包含框 ...

  9. python3 nonzero_浅谈python numpy中nonzero()的用法

    nonzero函数返回非零元素的目录. 返回值为元组, 两个值分别为两个维度, 包含了相应维度上非零元素的目录值. import numpy as np A = np.mat([[0,1,2,3,4, ...

最新文章

  1. java用jdbc来rollback,jdbc rollback,该怎么解决
  2. tfs java开发需要jar_使用Spring框架开发最少需要哪些jar包,依赖jar包有哪些?
  3. 手把手教你:亲手打造Silverlight的Win8外观(1) 前言
  4. 计算机知识小技巧,计算机知识---基本操作小技巧.pptx
  5. mybatis处理集合和循环数组问题
  6. Jmeter接口测试实例图文示例
  7. AngularJs+bootstrap搭载前台框架——基础页面
  8. 当vue遇到pwa--vue+pwa移动端适配解决方案模板案例
  9. 【系统架构】小型电商网站的架构(一)
  10. tinyxml库使用实例
  11. 线性/非线性规划问题求解
  12. onscripter For windows/MAC OS 中文版
  13. 首先感谢IQueBrew小组
  14. 家用无线路由器购买入门指南
  15. 航测无人机-任务规划模块 竞品分析
  16. 多元统计分析-橄榄油数据集
  17. 递归与回溯4:一文彻底理解回溯
  18. position四个属性详解
  19. 教大家写几个可能用得上的css3简单动画
  20. reader excelt to db

热门文章

  1. #东方星书法中考恭喜朱倩格、崔俊泽同学,在长沙2022初升高特长生书法专业测试(华益中学、明德华兴中心、望城一中、雷锋中学)入围/合格[庆祝][庆祝][庆祝]
  2. uniapp + uniapp2wxpack构建微信小程序插件
  3. Windows操作系统常见安全问题解决方法
  4. 数据结构:单链表逆置
  5. 精读《State of CSS 2022》
  6. rcnn 回归_RCNN系列算法的发展
  7. python字典及基本操作
  8. 删除电脑中的msi程序
  9. 如何申请成为社区的YY讲师?
  10. java mediator_关于Java 设计模式 中介者模式 Mediator