当前位置: 首页 > news >正文

标准文件和系统文件I/O

文件:标准文件IO、系统文件IO

Linux中一切皆文件(除网口外)。

标准文件IO:C语言标准库中的文件操作函数
fopen、fread、fwrite、fclose、fprintf

系统文件IO:由操作系统直接提供的接口、直接与内核交互
open、read、write、close

差异:
1、缓存机制
标准IO:
默认使用缓冲区,数据先写入缓冲区,当满足条件时才做实际操作。
作用:减少系统调用次数,提升效率。
系统IO:
没有默认缓冲区,每次都是进行系统调用,效率低。
2、跨平台性
标准IO:
接口由C标注你定义,与操作系统无关,同一代码可在不同平台运行,跨平台性强。
系统IO:
接口是由操作系统决定,所以不能跨平台。
3、操作对象
标准IO:
操作对象是 FILE*, 其封装了文件描述符、缓冲区等信息。
系统IO:
Linux下操作对象是文件描述符,Windows下操作对象是句柄。
4、使用场景
标准IO:
通常在用户态下进行个操作。
系统IO:
一般用于底层设备驱动文件等控制。


#include <stdio.h>

/*
* 功能说明:以mode方式打开path文件
* 参数1:将要打开文件的路径及文件名
* 参数2:打开文件的方式
*   r   以只读方式打开文件,文件指针指向文件起始位置。
*   r+  以读写方式打开文件,文件指针指向文件起始位置。
*   w   以写的文件打开文件,如果文件存在则清空否则创建,文件指针指向文件起始位置。
*   w+  以读写方式打开文件,如果文件不存在则创建否则清空,文件指针指向文件起始位置。
*   a   以追加方式打开文件,如果文件不存在则创建,文件指针指向文件末尾位置。
*   a+  以读和追加方式打开文件,如果文件不存在则创建,如果读文件则文件指针指向文件起始位置,如果追加(写)则文件指针指向文件末尾位置。
* 返回值:成功返回FILE指针,失败返回NULL并且errno被设置。
*/
FILE *fopen(const char *path, const char *mode);

/*
* 功能说明:读取文件中的数据
* 参数1:用于存储待读取的数据
* 参数2:每次读取的字节数
* 参数3:总共读取的次数
* 参数4:待读取文件的FILE指针
* 返回值:返回完整读取的nmemb数
*/
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

/*
* 功能说明:向文件中写入数据
* 参数1:待写入的数据
* 参数2:每次写入的字节数
* 参数3:总共写入的次数
* 参数4:待写入文件的FILE指针
* 返回值:返回完整写入的nmemb数
*/
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

/*
* 功能说明:关闭文件
* 参数1:待关闭文件的FILE指针
* 返回值:成功返回0,失败返回EOF且errno被设置
*/
int fclose(FILE *stream);

http://www.xdnf.cn/news/1148455.html

相关文章:

  • CSS篇——第一章 六十五项关键技能(上篇)
  • 配置华为交换机接口链路聚合-支持服务器多网卡Bind
  • 解决Maven版本不兼容问题的终极方案
  • 定时器中BDTR死区时间和刹车功能配置
  • 低代码平台ToolJet实战总结
  • Flutter基础(前端教程①③-单例)
  • java内存图
  • 【Linux服务器】-MySQL数据库参数调优
  • Ubuntu 22.04.3 LTS 安装 MySQL
  • Kubernetes常用命令总结
  • 【逻辑回归】MAP - Charting Student Math Misunderstandings
  • 自由学习记录(70)
  • 《汇编语言:基于X86处理器》第8章 高级过程(3)
  • Python 代码生成 LaTeX 数学公式:latexify 参数 parameters
  • 【C语言进阶】结构体
  • Linux常用指令大全
  • 力扣经典算法篇-26-长度最小的子数组(暴力求解法,左右指针法)
  • Java 大视界 -- Java 大数据机器学习模型在自然语言处理中的对话系统多轮交互优化与用户体验提升(351)
  • ROS2 通过相机确定物品坐标位置
  • 在非Spring Boot的Spring项目中使用Lock4j
  • 开疆智能Profinet转ModbusTCP网关连接康耐视InSight相机案例
  • SPARKLE:深度剖析强化学习如何提升语言模型推理能力
  • 智慧资产管理系统需求文档
  • uniapp中腾讯地图SDK-安装及配置(自动定位回显城市)
  • Validation - Spring Boot项目中参数检验的利器
  • 打造高效订单处理!ZKmall开源商城的统一履约中心架构解析
  • UGUI 性能优化系列:第三篇——渲染与像素填充率优化
  • Vue3生命周期函数
  • ABP VNext + Kubernetes Istio:微服务网格实战指南
  • Word快速文本对齐程序开发经验:从需求分析到实现部署