您的位置:首页 > 文旅 > 旅游 > 微信小程序设计_湛江网站建设开发_百度竞价托管外包_手机网站排名优化

微信小程序设计_湛江网站建设开发_百度竞价托管外包_手机网站排名优化

2025/5/10 0:15:57 来源:https://blog.csdn.net/xaiobai123/article/details/144114902  浏览:    关键词:微信小程序设计_湛江网站建设开发_百度竞价托管外包_手机网站排名优化
微信小程序设计_湛江网站建设开发_百度竞价托管外包_手机网站排名优化

标准C库IO介绍

我们在学习C语言时,了解过很多的标准库函数,比如:fopen、fclose、fputs、fgets等,它主要有以下优点:

  1. 可以跨平台
    标准C库IO通过调用系统API来实现的跨平台,比如在Linux下的C标准库函数调用Linux的API,而Windows下的C标准库函数调用Windows下的API,当然不能把编译好的程序直接在另一个操作系统中运行,需要重新编译。补充一点,JAVA也可以跨平台,但是原理不一样,它更具JVM虚拟机来实现的,具体可以参考这篇文章:JAVA跨平台原理
  2. 效率高
    标准C库IO有一个缓冲器(Linux系统IO没有),它可以先将部分数据放入缓冲区中,然后再调用系统AIPI,一次性将缓冲区内的数据全部处理完。

下面这张图可以很好描述标准C库IO函数,以fopen举例:
在这里插入图片描述
这里文字简单描述下这幅图的流程:硬盘有一个文件hello.txt,使用fopen(标准C库IO函数)读取hello.txt文件,然后返回一个文件指针FILE*,可以在终端查看fopen函数的具体用法:

man fopen

在这里插入图片描述
有了这个文件指针我们就可以往这个文件读数据和写数据了。这个文件指针指向一个结构体,包含:文件描述符(Linux系统API只返回这个),用来索引对应的磁盘文件;文件读写指针,这个指针指向读写文件的实际位置;IO缓冲区的地址,数据先存放到这,然后调用系统API一次性写入磁盘(以写数据为例)。
可以查看FILE*的源代码:
在这里插入图片描述
Ctrl+左键转入定义:
在这里插入图片描述可以看到FILE是_IO_FILE结构体的别名,继续查看定义:

在这里插入图片描述

缓冲区写入磁盘有三种出发方式:调用fflush函数直接刷新缓冲区;缓冲区满了;正常关闭文件。

标准C库IO和Linux系统IO关系

关系如下所示:
在这里插入图片描述
标准C库IO多了一个缓存区,它直接与缓冲区交互,缓冲区通过内核(系统API调用)与磁盘交互。这样看标准C库IO效率更高。

标准C库IO和Linux系统IO使用场景

标准C库IO:从上面可以看出读写磁盘文件的时候,使用标准C库函数比较合适。
Linux系统IO:如果网络通信等实时性要求高的时候,就不能用标准C库函数,因为数据首先要存放在缓冲区,不能直接交互,所以应该使用Linux系统IO函数。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com