【Linux学习笔记29】标准IO初简介(fopen函数)

引言

回顾一下之前的系统IO,系统IO与标准IO都是我们操作文件的接口。而标准IO比系统IO的功能更加丰富,因为其功能是由标准库提供的。并且最重要的是,标准IO是带有缓冲的,就能够提高程序的吞吐量。

标准IO的特点

  • 标准IO的操作对象是文件指针
  • 标准IO由标准库提供,因此功能更加丰富。
  • 标准IO带有缓冲,能够提高程序的吞吐量,尤其是在处理大量数据的情况下,尤为出色。

文件指针与文件描述符的关系

在系统IO中有一个特别重要的就是文件描述符,而标准IO则有文件指针,那么它们的关系是:
在这里插入图片描述

  • 我前面笔记有记载过系统IO的文件描述符的原理,就是上图的红色区域,也就是系统IO的工作原理。
  • 而标准IO是上图蓝色部分。区别就是,在用户空间不仅包含了文件描述符,还包含了很多指针。那么文件指针fp会把数据全部放到缓冲区,那么会在特定的时间,再去给内核空间输送数据。
  • 标准IO相对于系统IO频繁使用内核空间的低效率行为的好处是:如果遇到大量数据的情况下,标准IO会起缓冲的功能,那么在某条件成立的情况下,把所有数据输送到内核,然后再同步到文件中。
  • 文件指针fp并不是指向文件的指针,从上图可以看到,文件指针只是指向代表管理文件的FILE{}结构体。

fopen()函数的使用

值得注意的是:使用函数不能想当然,要看着手册使用:

列表 A列表B
功能获取指定文件的文件指针
头文件#include <stdio.h>
原型FILE *fopen(const char * path ,const char *mode);
参数path:将要打开的文件
参数mode"r" : 以只读方式打开文件,要求文件必须存在
参数mode“r+":以读写方式打开文件,要求文件必须存在
参数mode”w":以只写方式打开文件,文件如果不存在将会自动创建新文件,如果存在将会将其内容清空
参数mode"w+“:以读写方式打开文件,文件如果不存在将会创建新文件,如果存在将会将其内容清空
参数mode"a":以只写方式打开文件,文件如果不存在将会创建新文件,且文件位置偏移量被自动定位到文件末尾(即以追加方式写数据)
参数mode”a+“:以读写的方式打开文件,文件如果不存在将会创建新文件,且文件位置偏移量被自动定位到文件末尾(即以追加方式写数据)
返回值成功:文件指针
返回值失败:NULL

在这里插入图片描述


系统缺省标准文件

在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值