偶然碰到了freopen这个函数,起初以为和fopen什么的一样,但是发现close后不能好好输出了。先说说fopen()吧。

1. fopen()

  在C语言中遇到使用文件输入/输出的,最常见的可能就是它了吧。

  fopen调用的一般形式为:
  文件指针名=fopen(文件名,使用文件方式)

  • 文件指针名,必须是FILE类型的指针变量;
  • 文件名,被打开的文件名
  • 使用文件方式,是文件的类型和操作要求,有如下几种:
    • r(read):只读;
    • w(write):只写;
    • a(append):追加;
    • t(text):文本文件,可省略;
    • b(binary):二进制文件。
    • + :读和写

  打开方式由以上几种基本类型组合而成,注意:

  • r 打开文件,该文件必须存在,且只能从该文件读出;
  • w 打开文件只能想该文件写入。若文件不存在,则自动新建;若文件已存在,则删去原文件再新建

  这个函数的用法如下:

FILE *fp1,*fp2; //定义文件指针类型
fp1=fopen("input.in","r"); //用fopen函数以只读方式(r)打开输入文件input.in;
fp2=fopen("output.out","w");//用fopen函数以写入方式(w)打开输出文件output.out;fscanf(fp1,"%d",&temp);//fscanf从文件中读取数据,fp1文件指针指定文件;
fprintf(fp2,"%d",temp);//fprintf将数据输出到文件,fp2文件指针指定文件;fclose(fp1);//关闭文件指针。
fclose(fp2);

  在启用fopen函数时,需要特定的函数fscanf,fprintf对文件操作;普通的scanf和printf依然能在命令行界面操作。

2. freopen()

  freopen这个函数,在ACM中应用很广,因为ACM试题中可能有大量输入数据,程序运行往往不是一次成功的,每次运行都重新输入很浪费时间,因此freopen就可以解决测试数据的重复输入问题。

函数声明:

FILE * freopen(const char *filename, const char *mode,FILE *stream);

参数说明:

  • filename:要打开的文件名;
  • mode:文件打开的模式,和fopen中的模式(r/w)相同。
  • stream:文件指针,通常使用标准流文件(stdin/stdout/stderr)

使用方法:

freopen("data.in","r",stdin);
freopen("data.out","w",stdout);fclose(stdin);
fclose(stdout);

  freopen()函数重定向了标准流,使其指向指定文件,因此不需要修改scanf和printf。

  确实很方便吧,不过还有个问题要解决。通过freopen我们把标准流重定向到了指定文件,那么如果我们想让一些信息输出到屏幕,该怎么做呢?

  fopen函数由fprintf和printf两个函数,分别输出到文件和控制台。而freopen函数,需要修改函数的filename参数,让标准流输出到控制台。而这个控制台设备文件的名字与操作系统相关。

DOS、Win系统:

freopen("CON","r",stdin);
freopen("CON","w",stdout);

Linux:

freopen("/dev/console","r",stdin);

  这样就能实现一部分需要的数据输出到文件,同时另一部分数据输出到控制台。这样让程序拥有一些简单的交互能力。

freopen 函数和 fopen 函数简单介绍相关推荐

  1. 【C/C++】freopen 函数和 fopen 函数|标准输入输入写入文件|屏幕输出写入文件

    目录 相同和不同点 例子 fopen freopen 相同和不同点 freopen 和 fopen 都是C的标准库函数被包含于C标准库头文件<stdio.h>中. fopen就是我们最熟悉 ...

  2. php fopen函数php,fopen函数介绍与使用方法详解

    在我们的PHP开发中会经常遇到fopen()和file_get_contents(),相信很多同学都发现这两个函数基本上都差不多,那么我们今天就来讲讲php fopen()和file_get_cont ...

  3. C语言——函数和数组的简单介绍

    本人声明:小编是一个刚学c语言不久的小白,想要写博客来加深对知识的理解,如果有写得不对或者不好的地方请各位大佬多多指教! 目录 (1)函数的概念 (2)函数的定义 (3)函数的调用 (4)使用函数和不 ...

  4. C语言文件 open函数和fopen函数

    open 头文件: #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> 定义函数: in ...

  5. open函数和fopen函数区别

    fopen是基于ANSIC标准C的的API open是UNIX系统的API的区别 这里重点运用fopen等ANSIC标准C的的API,open等UNIX系统的API可参考主页文章 1.层次不同 ope ...

  6. Window对象中的函数confirm方法的简单介绍

    <!DOCTYPE html> <html> <head>     <meta charset="utf-8"> <title ...

  7. 函数:fopen的使用方法

    函数:fopen 函数原型:FILE * fopen(const char * path,const char * mode); 返回值:文件顺利打开后,指向该流的文件指针就会被返回.如果文件打开失败 ...

  8. python的fopen函数_打开文件fopen函数的用法

    在C语言中,对文件操作之前,首先需要打开文件,使用的函数是fopen函数,它的作用是打开文件,获取该文件的文件指针,方便后续操作.函数原型为:FILE *fopen(const char *filen ...

  9. 九、Linux文件 - fopen函数和fclose函数讲解

    目录 1.fopen函数 2.fclose函数 3.fopen函数和fclose实战 1.fopen函数 fopen fwrite fread fclose ...属于标准C库 include < ...

最新文章

  1. Javascript中二进制数据处理方法
  2. Windows内核新手上路2——挂钩shadow SSDT
  3. JavaScript会是Web开发的未来吗?
  4. Elasticsearch的PHP的API使用(一)
  5. DDD领域驱动实践记录
  6. 二叉树前序、中序和后序遍历的非递归实现
  7. java url下载ics_使用Microsoft Graph API处理外部(Internet / .ics)日历URL
  8. 乐橙本地录像回放不了_乐橙智能锁来告诉你:你家门真的安全吗?
  9. Bootstrap 字体图标 Bootstrap Glyphicon Components
  10. 使用WindowsAPI创建txt文件
  11. 老年代的更新机制_如何理解Java GC机制
  12. 领扣(LeetCode)七进制数 个人题解
  13. 移动段开发前景真的凉了么?
  14. java复习【笔试可能常见】
  15. Atitit 函数式常用子操作与组合 目录 1. 集合类的操作 1 1.1. Transform、map 1 1.2. paip.提升效率---filter map reduce 的java 函
  16. Python列表和元组:[] ()
  17. android webview加载H5链接时 没有加载权限弹框的问题
  18. 【愚公系列】2022年05月 vue3系列 axios请求的封装(TS版)
  19. django外键-left join
  20. 基于jsp servlet javabean的学生管理系统

热门文章

  1. Java中的线程基础篇-线程基本概念
  2. android自定义dialog对话框,android的自定义dialog对话框实现
  3. 怎样固定Excel表头
  4. 周末舞会(循环队列)
  5. parquet--golang使用
  6. 爪爪博士:猫咪猫腿骨折和扭伤的实质性区别
  7. 百度地图开发之自定义大头针
  8. 概率分布(多项分布,Dirichlet分布)
  9. 孩子喜欢玩游戏学计算机行吗,孩子有网瘾就喜欢玩游戏,不如送他去学电脑学编程学怎么做游戏...
  10. 爱奇艺APP全面适配iOS 14 首批支持画中画功能 追剧聊天两不误