fopen(fopen

更新时间:2023-03-01 18:06:43 阅读: 评论:0

笔试简答题1

1.缓冲文件系统和非缓冲文件系统的区别

在程序中,对于文件的读写,程序运行时间主要消耗在I/O上。与读写硬盘上的文件慢很多;每次读取和写入文件的内容很少,那么程序运行时间主要消耗在I/O上。

文件缓冲系统:磁盘<---->缓冲池(0.5k)<---->二进制流(变量描述符集合)

解释:系统会自动的给每一个正在使用的文件开辟一块缓存区,缓存区的大小一般由各个C的版本规定,一般为512BYTE(0.5K)大小。从磁盘向内存读取数据时,则一次将一些数据从磁盘送至内存缓冲区(满载),然后在从缓冲区逐个将数据送给接收变量(文本描述符);从内存向磁盘写入数据时,同样先将数据填满缓冲区,再一次性将数据从缓冲区送到磁盘。

形象理解:缓存区就类似一个中间的包文件,将单个的数据进行汇总,打包,然后进行传送。这样就减少了单个输入输出直接访问磁盘的次数,减少对磁盘的实际读写次数。

依赖:文本结构体指针,可以进行读写字符、字符串、格式化数据等。

磁盘读写过程: 磁盘每次读写都要移动磁头并寻找磁道扇区,花费一定的时间。

管理文件方式:缓冲文件系统是借助文本结构体指针来对文件进行管理,通过文件指针来对文件进行访问,既可以读写字符、字符串、格式化数据,也可以读写二进制数据。

常用操作函数:缓冲文件系统函数一般是有f开头的函数,如fopen(),fwrite(),fread()等。

缓冲文件输入输出:标准输入输出(标准I/O)--缓冲的I/O操作

注:全缓冲I/O和行缓冲I/O

全缓冲I/O:在缓冲区填满后才进行实际的I/O操作。在磁盘上的文件常常使用标准I/O库函数实施全缓冲。

行缓冲I/O:指在输入或输出中遇到换行符时,执行实际的I/O操作。

形象图解:

非文件缓冲系统:磁盘(文件) <-----> 二进制文件(变量流)

解释: 非文件缓冲系统不会自动分配缓冲区,需要用户根据自己的需要去设置,在传统的UNIX下,用缓冲文件系统处理文本文件,用非缓冲文件系统来处理二进制文件。非缓冲文件系统依赖操作系统,通过操作系统的功能对文件进行读写,是系统级的输入输出,他不涉及文本结构指针,只能读写二进制文件,但效率高、速度快。ANSI标准不再包括非缓冲文件系统。

依赖:操作系统

特点:只能读写二进制文件, 效率高、速度快,在遇到突发事件时(例如断电),内容不会丢失。

缺点:频繁进行I/O操作,非常消耗CPU。

常用操作函数:open() ,read(),write(),lek(),clo()等。

非缓冲文件系统输入输出:系统输入输出(系统I/O)

形象图解:

笔试简答题2

2.open和fopen的区别

1.open为非缓冲文件系统操作函数,无缓冲;fopen为缓冲文件系统操作函数,中间有缓冲区。

2.open一般打开系统文件,在POSIX中定义;fopen打开普通文件,在标准C语言库里面定义。即open是系统调用,fopen是标准库调用。

3.open不能移植,fopen可移植。

4.open返回文本描述符(整数),fopen返回文本结构指针。

5.fopen进行读写操作时,减少了用户态和内核态的切换,open每次都需要进行内核态和用户态的切换,整体速度较慢。

顺序访问文件:fopen系列的函数要比直接调用open系列快;随机访问文件:open要比fopen系列快。

6.open可以指定权限,而fopen不能指定文件创建的权限。

Linux系统架构:

注:

应用程序可以通过调动Linux系统调用接口编程,也可以使用标准库编程。C标准库函数本身也是通过系统调用接口(操作系统API)实现的。

下面是相关的参考文献:

缓冲I/O与非缓冲I/O(fopen与open系列函数区别) 系统调用与C库 - Tim的嵌入式之旅 - CSDN博客

Linux(C/C++)下的文件操作open、fopen与freopen - Boblim - 博客园

本文部分内容参考至网络,如有错误,敬请指正,如有侵权,请联系修改。

本文发布于:2023-02-28 20:14:00,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/167766520382561.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:fopen(fopen.doc

本文 PDF 下载地址:fopen(fopen.pdf

下一篇:返回列表
标签:fopen
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|