C语言:fopen与open的总结

目录

 

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/482054.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2013年图灵奖得主Leslie Lamport:如何写出数学上完美的算法

来源:新智元图灵奖得主、分布式系统先驱、LaTeX之父Leslie Lamport认为,对于程序员而言,对数学思维的强调永远不会过分,要写出好代码,不能惧怕数学。Leslie Lamport可能不是一个家喻户晓的名字,但一提到和他…

Python绘制图形之Matplotllib绘图

Python绘制图形之Matplotllib绘图 目录 Python绘制图形之Matplotllib绘图 一、绘制二维函数图 1.1 绘制 f(x)sin2(x−2)e−x2 1.2 、绘制 sigmoid函数图: f(x)11e−x 1.3、绘制正态分布图 二、绘制三维图 2.1 绘制三维螺旋图 2.2 绘制三维线性点图 2.3 绘制三维柱状图 2…

新发现罕见生命密码:基因读取的另一套代码

来源:生物通令人震惊但让人困惑的是,我们所知的生命密码使用了61个不同的三字母密码子,只产生了20个氨基酸,这意味着许多密码子被用来描述同一件事。新的研究表明,大脑和睾丸似乎非常适应使用多种不同种类的遗传密码来…

Java总结:正则表达式

目录 Java 正则表达式 正则表达式实例 实例 捕获组 实例 RegexMatches.java 文件代码: 正则表达式语法 Matcher 类的方法 索引方法 研究方法 替换方法 start 和 end 方法 RegexMatches.java 文件代码: matches 和 lookingAt 方法 RegexMat…

《自然-机器智能》:神经形态技术可使大型深度学习网络节能16倍

来源: 学术头条受生物大脑机制的启发,研究人员一直在提高人工神经网络的性能效率和计算要求。一项新的研究表明,对于大型深度学习网络,神经形态技术的能源效率有望达到其他人工智能系统的 16 倍。格拉茨技术大学(TU Gr…

Java总结:正则表达式进行校验

Java总结:正则表达式进行校验 目录 Java总结:正则表达式进行校验 一、校验数字的表达式 二、校验字符的表达式 了解理论知识,请点击:Java总结:正则表达式 一、校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^\d{n}$ 3 至少n位的数字&am…

康奈尔计算计学院院长Kavita Bala:「元宇宙」算什么?上帝之眼或将通过 AI 诞生...

来源:AI科技评论编译:王玥编辑:陈彩娴在今年斯坦福HAI实验室的春季会议上,康奈尔计算机学院院长Kavita Bala以“视觉外观和理解:从微米分辨率到世界级”为题,就她在数字化现实世界方面的研究进行了精彩的演…

MySql笔记:Can't create table 'mydb3.#sql-f48_1' (errno: 150

QUESTION:Cant create table mydb3.#sql-f48_1 (errno: 150 ANSWER: 总得来说是因为两个表的字段类型不一致,例如: 两个字段的类型或大小不严格匹配,一个为tinyint,另一个为char;或一个为int(10)另一个为int(9)也是不…

王浩:哥德尔思想概说

来源:本文原文刊于《科学文化评论》2004年第6期撰文:王浩翻译:邢滔滔译者按本文选自王浩最后一本著作A Logical Journey—From Gdel to Philosophy (Cambridge: The MIT Press, 1996)的引言部分,有删节,题目…

八大排序:Java实现八大排序及算法复杂度分析

目录 QUESTION:八大排序:Java实现八大排序及算法复杂度分析 ANSWER: 一:冒泡排序 1.算法分析 2.时间复杂度分析 3.代码 二:选择排序 1.算法分析 2.时间复杂度分析 3.代码 三:插入排序 1.算法分析 2.时间复杂度分析 3.代码 四&a…

网友:看完Jeff Dean新论文,我再也不相信大厂的鬼话了

来源:数学中国文字:乔叶配图 :乔叶排版:余弟宗璇「我相信他们得到的数字是准确的,他们确实做了工作并得到了结果…… 但这样真的好吗?」一名机器学习研究者的灵魂发问,今天成为了整个社区最热门…

Tomcat:部署成功后不能正常访问local:8080,服务已经启动。

QUESTION:Tomcat:部署成功后不能正常访问local:8080,服务已经启动? ANSWER: 昨天启动的时候,tomcat能够正常启动,但是对应的网页却打不开。针对此问题的解决采取了以下步骤: 首先,我找到tomcat的安装目录&#xff0…

CV未来在这68张图上?Google Brain深扒ImageNet:顶级模型全都预测失败

来源:新智元编辑:LRS【新智元导读】ImageNet的标签问题一直为人诟病,最近Google Brain全面分析了基准内遗留的历史问题,并找出了所有顶级模型全都预测失败的68张图片,或许未来CV想取得突破,先得攻破这68关&…

谷歌夺回AI画语权,机器的想象力达到全新高度,网友:DALL·E 2诞生一个月就过时了?...

来源:量子位在让AI搞创作这件事上,谷歌和OpenAI正面刚起来了。这不,震惊全网的DALLE 2才新鲜出炉一个月,谷歌就派出名为Imagen的选手来打擂台。直接上图对比,左边是谷歌Imagen选手眼中的“猫猫绊倒人类雕像”&#xff…

Linux安装MySQL的完整步骤并有关MySQL8.0版本的问题方法

目录 QUESTION:Linux安装MySQL的完整步骤? ANSWER: 一:使用wget 直接下载 二:安转软件源,将platform-and-version-specific-package-name 替换为你下载的rpm名 三:安装mysql服务端 四:首先启动mysql 五&#x…

研究遭质疑,Jeff Dean回应:我们本就不是为得到新SOTA,成本计算也搞错了

来源:机器之心编辑:杜伟、陈萍对于 Jeff Dean 的回复,你认同吗?昨日,整个社区最热门的话题无外乎是 reddit 上一名机器学习研究者对谷歌 AI 负责人 Jeff Dean 参与论文的质疑。这篇论文是《An Evolutionary Approach t…

部署WEB应用到云服务器时,出现的部分网页不能显示或者连接数据库问题。

目录 QUESTION:部署WEB应用到云服务器时,出现的部分网页不能显示或者连接数据库问题? ANSWER: 一:Mysql配置问题 1.1MySQL配置不区分大小写: 1.2设置MySQL字符集 QUESTION:部署WEB应用到云服务器时,出现的部分网页不能显示或…

数据库:MySQL和MariaDB的JDBC连接

目录 QUESTION:MySQL和MariaDB的JDBC连接? ANSWER: 区别与联系: MySQL: MariaDB: java连接mariaDB数据库的设置:(tomcat 8) 第一种方法:使用tomcat自带的mysql-connector-java-5.1.40-bin.jar&#x…

全脑地图:单个记忆被拆分存储在多个相连的大脑区域

来源:神经生物学根据一项创新的脑域映射研究,单一的记忆被存储在许多连接的大脑区域。创新的脑成像研究表明,“记忆印记”,编码记忆的神经元集合,广泛分布,包括在以前没有意识到的区域。麻省理工学院皮考尔…

李德毅 | 新一代人工智能如何从传统人工智能中脱颖而出

来源:图灵人工智能 作者:李德毅 中国工程院院士、CAAI名誉理事长、主线科技首席科学家2021年4月10日,“吴文俊人工智能科学技术奖”十周年颁奖盛典在北京举办。颁奖典礼上,中国工程院院士、中国人工智能学会名誉理事长李德毅荣获…