众所周知,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. crontab 命令
  2. redis 数据库主从不一致问题解决方案
  3. 【微信小程序企业级开发教程】界面跳转方法总结
  4. 利用奇异值分解(SVD)简化数据
  5. 逆向工程核心原理学习笔记(二):字符串检索法查找main函数
  6. 管理日志--项目管理科学的产生与发展
  7. php 异常错误信息用处,关于PHP中异常错误的处理详细介绍
  8. Tip:部署sharepoint2013SP1指定SQL数据库时的小细节
  9. MySQL数据库学习路径 链接汇总
  10. world模板生成ftl文件
  11. 一起聊聊操作简单又高效的Excel数据透视表
  12. 飞凌小课堂-RK3399系列 linux双千兆网口解决方法-RTL8153
  13. 虚拟机架设服务器u盘不显示盘符,【图文详解】怎么解决win7虚拟机无法识别U盘问题...
  14. 《众妙之门——用户体验设计的秘密》一第2章 设计“好脾气”的网页2.1 巴赫和他的十二平均律...
  15. CNN卷积神经网络(图解CNN)
  16. 字体设计:拉丁字母字体书写方法分类
  17. 微信小程序全栈开发实践 第二章 微信小程序组件介绍及使用 -- 2.9 页面链接组件,如何自定义一个导航栏?
  18. 中关村高新技术企业名单
  19. 计算机 实验室安全准入制度,南京信息工程大学实验室安全准入制度(试行)...
  20. 图片实测:智能鉴黄,哪家强

热门文章

  1. 【JZOJ A组】游行
  2. 新能源汽车销量大跌,比亚迪损失较大,特斯拉成为最大赢家
  3. 小米海量数据推送服务技术讲解
  4. 用python写无法拒绝的表白
  5. MySQL超详细安装教程 手把手教你安装MySQL到使用MySQL 最简单的MySQL安装方式,这种方式装,卸载也简单
  6. final、static、static fina区别
  7. c语言用自动机识别字符串,自动机专题
  8. gulp 压缩html文件,gulp压缩js
  9. java获得系统换行符_java获取系统换行符
  10. 刚和马云做了比较:马云学历比我高,我比马云帅!马云比我有钱,我比马云年轻!唉!打个平手!不说了,包工头,我去搬砖了