当前位置: 首页 > 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.dtcms.com/a/287180.html

相关文章:

  • 鸿蒙与web混合开发双向通信
  • 云服务器磁盘IO性能优化的测试与配置方法
  • docker|Linux|以centos基础镜像为基础制作nmap专用镜像(镜像瘦身计划)
  • SQL基础操作指南:约束、表设计与复杂查询
  • 【RK3576】【Android14】USB开发调试
  • install_arm_docker.sh
  • 【Qt开发】Qt的背景介绍(三)-> 认识Qt Creator
  • python网络爬虫之selenium库(二)
  • Android回调机制入门
  • 工程图矢量化 笔记 | potrace ezdxf svgpathtools | png转svg保存dxf用matplotlib画出来
  • 基于springboot的考研互助小程序
  • Redis的持久化-RDB
  • 【橘子分布式】gRPC(编程篇-中)
  • 基于开放API接口采集的定制开发开源AI智能名片S2B2C商城小程序数据整合与增长策略研究
  • 通过phpStudy,用nginx部署vue项目,支持部署多套vue项目(详细教程)
  • LLM 的Top-P参数 是在LLM中的每一层发挥作用,还是最后一层?
  • CSS-in-JSVue的解决方案
  • 将HTML+JS+CSS数独游戏包装为安卓App
  • 前端-CSS-day6
  • 从零开始学Tailwind CSS : 颜色配置原理与实践
  • Django3 - Web前端开发基础 HTML、CSS和JavaScript
  • 【爬虫】04 - 高级数据存储
  • VLA--Gemini_Robotics: 论文阅读 -- 直接控制机器人的视觉-语言-动作(VLA)模型
  • 如何理解华为横向虚拟化CSS+iStack
  • Attu-Milvus向量数据库可视化工具
  • [牛客2020提高赛前集训营day3] 牛半仙的魔塔
  • Oracle RU19.28补丁发布,一键升级稳
  • The Missing Semester of Your CS Education 学习笔记以及一些拓展知识(三)
  • .NET 8 中的 KeyedService
  • Python数据分析案例79——基于征信数据开发信贷风控模型