目录

QUESTION:fopen与open的总结?

ANSWER:

1.非缓冲文件系统

2.缓冲文件系统

3.具体区别


QUESTION:fopen与open的总结?

ANSWER:

1.非缓冲文件系统

缓冲文件系统是借助文件结构体指针来对文件进行管理,通过文件指针来对文件进行访问,既可以读写字符、字符串、格式化数据,也可以读写二进制数 据。非缓冲文件系统依赖于操作系统,通过操作系统的功能对文件进行读写,是系统级的输入输出,它不设文件结构体指针,只能读写二进制文件,但效率高、速度 快,由于ANSI标准不再包括非缓冲文件系统,因此建议大家最好不要选择它。本书只作简单介绍。open, close, read, write, getc, getchar, putc, putchar 等。

2.缓冲文件系统

缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”, 装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存 “缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大,则操作外存的次数就少,执行速度就快、效率高。一般来说,文件“缓冲区”的大小随机器 而定。

fopen, fclose, fread, fwrite, fgetc, fgets, fputc, fputs, freopen, fseek, ftell, rewind等

3.具体区别

前者属于低级IO,后者是高级IO。
前者返回一个文件描述符(用户程序区的),后者返回一个文件指针。
前者无缓冲,后者有缓冲。
前者与 read, write 等配合使用, 后者与 fread, fwrite等配合使用。
后者是在前者的基础上扩充而来的,在大多数情况下,用后者。
http://blog.chinaunix.net/u/21067/showart_213410.html
open 是系统调用 返回的是文件句柄,文件的句柄是文件在文件描述副表里的索引,fopen是C的库函数,返回的是一个指向文件结构的指针。

fopen是ANSIC标准中的C语言库函数,在不同的系统中应该调用不同的内核api 
linux中的系统函数是open,fopen是其封装函数,个人观点。仅供参考。

文件描述符是linux下的一个概念,linux下的一切设备都是以文件的形式操作.如网络套接字、硬件设备等。当然包括操作文件。
fopen是标准c函数。返回文件流而不是linux下文件句柄。

设备文件不可以当成流式文件来用,只能用open
fopen是用来操纵正规文件的,并且设有缓冲的,跟open还是有一些区别

一般用fopen打开普通文件,用open打开设备文件

fopen是标准c里的,而open是linux的系统调用.
他们的层次不同.
fopen可移植,open不能

我认为fopen和open最主要的区别是fopen在用户态下就有了缓存,在进行read和write的时候减少了用户态和内核态的切换,而open则每次都需要进行内核态和用户态的切换;表现为,如果顺序访问文件,fopen系列的函数要比直接调用open系列快;如果随机访问文件open要比fopen快。

更多精彩博文关注:https://blog.csdn.net/yang13563758128

C语言:fopen与open的总结相关推荐

  1. c语言文件打开函数,C语言fopen函数中文件打开方式(参数值)

    满意答案 keaichengb.. 推荐于 2017.09.05 采纳率:40%    等级:12 已帮助:3704人 C语言fopen函数用于打开文件. 函数原型:FILE * fopen(cons ...

  2. C语言 fopen 函数 - C语言零基础入门教程

    目录 一.fopen 函数简介 二.fopen 函数实战 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.fopen 函数简介 C 语 ...

  3. c语言用fopen打开txt,C语言fopen不能打开.txt文件

    C语言fopen不能打开.txt文件0 #include#include#includevoidencrypt(char*f1,char*pwd,char*f2){inti=0;FILE*fp1,*f ...

  4. c语言编程文件打不开,c语言fopen打开文件失败的原因是什么?

    c语言fopen打开文件失败的原因是什么? 原因是:程序是以"r"的方式,也就是"读"的方式打开file.txt文件,可是程序都没有指定这个文件在哪里,程序找不 ...

  5. 计算机科学类专升本复习之“C语言fopen函数的用法”详解(初稿)

    C语言fopen函数的用法,C语言打开文件详解 在C语言中,"操作文件" 之前 必须 先"打开文件"; 所谓"打开文件",就是让 " ...

  6. c语言fopen函数的作用是,c语言fopen函数的用法

    在c语言中可以使用"fopen()"函数打开一个文件,该函数用于打开一个文件,其语法是"open("file a","r");&q ...

  7. c语言中fopen的作用,c语言fopen函数的用法

    在c语言中可以使用"fopen()"函数打开一个文件,该函数用于打开一个文件,其语法是"open("file a","r");&q ...

  8. C语言fopen函数的编程实现(可直接粘贴走验证)

    C语言的文件操作---fopen(打开文件) tips: function -- open the file and show the message on the screen (if this f ...

  9. c语言程序 fopen用法,fopen(c语言fopen函数的用法示例)

    请问如何读取 M51文件的bank fopen函数用来打开一个文件,其调用的一般形式为:文件指针名=fopen(文件名,使用文件方式): 其中,"文件指针名"必须是被说明为file ...

最新文章

  1. VSS 2005 客户端和服务器端配置总结
  2. IT草根的江湖之路之六:曙光,第一次破例
  3. java shiro原理_Springboot shiro认证授权实现原理及实例
  4. SpringBoot项目打war包部署Tomcat教程
  5. docx文档怎么排列图片_格式转换太麻烦?仅需一行命令,搞定图片、音频、视频、文本批量转换!...
  6. 蓝桥杯——输出米字形
  7. Python之 while循环
  8. sql server与java实例_史上最全:PostgreSQL DBA常用SQL查询语句(建议收藏学习)
  9. dao获取到mysql存储函数_GreenDao3.0使用
  10. 百度宣布服务器硬盘,百度秘密拆空服务器硬盘改用SSD 谷歌与网易有道回应
  11. 掌讯3561跟3518区别_车载大屏导航掌讯方案MTK3561 ROOT 方法
  12. linux安装ralink驱动程序,Linux 安装 FW150UM/RALINK 无线网卡
  13. 一文打尽PHP代码加密方式
  14. 计算机电子表格题教程,计算机电子表格题教程.doc
  15. 我国的频段划分,请参考~
  16. java xsl转换pdf_fop生成PDF支持中文(xml amp; xsl) - 飞猪 - ITeye博客
  17. PHP反序列化原生类利用
  18. 1、定义一个复数类Complex,使得下面的代码能够工作。 Complex c1(3,5); Complex c2=4.5; c1.add(c2); c1.show();
  19. 使用 htop 和 ps 来监控 Linux 运行
  20. 关系型数据库表之间的联系[关系]详解

热门文章

  1. STM32启动文件——startup_stm32f10x_hd.s
  2. nyoj 586 疯牛(二分+贪心)
  3. celery mysql 异步_celery配合rabbitmq任务队列实现任务的异步调度执行[celery redis]
  4. 小程序背景图满屏_竞赛答题小程序
  5. jsp人事管理系统_Jsp+Ssm+Mysql实现的医院人事管理系统源码附带视频运行教程
  6. IDEA实时编译配置流程
  7. 二、uniapp项目(分段器的使用、scroll-view、视频下载、转发)
  8. Nodejs 路由封装 封装一个类似 express 的路由
  9. 利用BFS和DFS解决 LeetCode 130: Surrounded Regions
  10. LeetCode 1933. 判断字符串是否可分解为值均等的子串