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

day26-IO(2)

三、IO

4.文件的打开

1.函数接口

   9.fwrite

①原型: size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

 

②功能:向流中写入ptr指向的nmemb个对象,每个对象size个字节

③参数:

ptr:指向数据空间的首地址
size:写入的每个对象的大小
nmemb:写入对象的个数
stream:文件流指针

④返回值:

成功返回实际写入对象的个数
失败返回0

   10.fread

①原型:size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

 

②功能:从流中读取nmemb个对象到ptr指向的空间中,每个对象size个字节 

③参数:

ptr:存放数据空间的首地址
size:读取对象的字节大小
memb:读取对象的个数
stream:文件流指针

④返回值:

成功返回读到对象的个数
失败或者读到文件末尾返回0

6.流的定位

1.概念

   设置流的偏移量

2.偏移量的设置

   1.fseek

①原型:int fseek(FILE *stream, long offset, int whence);

②功能:设置流的偏移量的标识

③参数:

stream:文件流指针
offset:偏移量
     > 0 向后偏移
     < 0 向前偏移
whence:标识
     SEEK_SET 文件开头
     SEEK_CUR 当前位置
     SEEK_END 文件末尾

④返回值:

成功返回0 失败返回-1

   2.ftell

 

①原型:long ftell(FILE *stream);

②功能:获得流的偏移量

③参数:

stream:文件流指针

④返回值:

成功返回流的偏移量

   3.rewind

 

①原型:void rewind(FILE *stream);

②功能:将流重新定位到开头

7.文件IO

1.概念

   1.标准IO是有缓存的IO,文件IO没有缓存,适合于通信、硬件设备操作

   2.标准IO是库函数,文件IO是系统调用

2.系统调用与库函数

   1.系统调用:是Linux内核中的代码,只能在Linux系统中使用

   2.库函数是对系统调用的封装,可以在不同的操作系统中安装并使用,库函数最终还是要调用系统调用完成对应功能

3.文件IO函数接口

   1.函数接口

标准IO                   文件IO
fopen                     open
fclose                     close
fgetc/fputc              read/write
fgets/fputs
fscanf/fprintf
fread/fwrite
fseek/ftell/rewind    lseek

   2.文件打开

①原型:

int open(const char *pathname, int flags);
 
int open(const char *pathname, int flags, mode_t mode);
 

②功能:打开文件获得操作文件的文件描述符

③参数:

pathname:要打开的文件路径
flags:打开文件的标志,必须包含三者之一
     O_RDONLY
     O_WRONLY
     O_RDWR
     O_CREAT 文件不存在创建(注意要给定创建文件的权限)
     O_TRUNC 文件存在截断为0(清0)
     O_APPEND 追加
     O_EXCL 文件存在报错

④返回值:

成功返回新文件描述符
失败返回-1

注:

①有三个特殊的文件描述符:标准输入(0)、标准输出(1)、标准错误(2)

②文件描述符特点:

   ●非负整数

   ●取尚未被占用的最小的非负整数

   ●文件描述符是有上限的,到达上限后再打开会报错误

   3.关闭文件描述符

①原型:int close(int fd);

②功能:关闭文件描述符

   4.标准IO对应的文件IO的打开方式

标准IO文件IO
rO_RDONLY
r+O_RDWR
wO_WRONLY | O_CREAT | O_TRUNC, 0664
w+O_RDWR | O_CREAT | O_TRUNC, 0664
aO_WRONLY | O_APPEND | O_CREAT, 0664
a+O_RDWR | O_APPEND | O_CREAT, 0664

 

 

http://www.lryc.cn/news/619008.html

相关文章:

  • 学习笔记《区块链技术与应用》ETH 第二天 状态树
  • 数据分析—双十一
  • B.10.02.3-分布式一致性:电商业务场景下的理论与工程实践
  • IDEA插件开发实践
  • 从阶段演进到智能跃迁:企业合同管理的发展与趋势
  • SynAdapt:通过合成连续思维链实现大语言模型的自适应推理
  • @Rancher简介部署使用 - Docker Compose
  • Spring MVC 处理请求的完整流程详解
  • 【Unity】Spine重新播放动画时会闪烁上次动画的残影
  • 秋招笔记-8.12
  • Tauri Qt孰优孰劣
  • 【Unity】Unity中ContentSizeFitter有时无法及时自适应大小问题解决
  • 终端安全检测和防御技术总结
  • Python初学者笔记第二十四期 -- (面向对象编程)
  • SpringBoot集成MyBatis的SQL拦截器
  • MES系统怎么实现数字化闭环与设备预测性维护?
  • SQL180 每类试卷得分前3名
  • 单例模式,动态代理,微服务原理
  • 大数据技术入门精讲(Hadoop+Spark)
  • 当机械臂装上「智能大脑」:Deepoc具身智能模型如何重构传统自动化​
  • JavaEE 初阶第十八期:叩开网络世界的大门(上)
  • 自己动手造个球平衡机器人
  • 13.深度学习——Minst手写数字识别
  • 【自动化运维神器Ansible】playbook文件内变量定义全流程解析
  • 实时域自适应检测SOTA方案RT-DATR,刷新多个跨域检测榜单!
  • wordpress数据库文件sql导入时出现#1253错误
  • Java数据结构之ArrayList
  • 嵌入式分享合集136
  • 移动端调用大模型详解
  • 关于淘宝双十一