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

关于Linux编程:fread/fwrite/流的定位/文件IO

流的定位

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

2ftell

原型:long ftell(FILE *stream);
功能:获得流的偏移量
参数:stream:文件流指针
返回值:成功返回流的偏移量

3rewind

原型:void rewind(FILE *stream);
功能:将流重新定位到开头

1从终端输入一个文件名,获得文件的长度

2从bmp文件中读取图片的宽度和高度

文件IO

1.概念

  • 标准IO是有缓存的IO,文件IO没有缓存,适合于通信、硬件设备操作
  • 标准IO是库函数,文件IO是系统调用

2.系统调用与库函数

  • 系统调用:是Linux内核中的代码,只能在Linux系统中使用
  • 库函数:是对系统调用的封装,可以在不同的操作系统中安装并使用,库函数最终还是要调用系统 调用完成对应功能

3.文件IO函数接口

1. 函数接口:

标准IO                            文件IOfopen                            openfclose                           closefgetc/fputc                      read/writefgets/fputsfscanf/fprintffread/fwritefseek/ftell/rewind               lseek

2. 文件打开:

原型:int open(const char *pathname, int flags);int open(const char *pathname, int flags, mode_t mode);
功能:打开文件获得操作文件的文件描述符
参数:pathname:要打开的文件路径flags:打开文件的标志,必须包含三者之一O_RDONLYO_WRONLYO_RDWR  O_CREAT         文件不存在创建(注意要给定创建文件的权限)O_TRUNC         文件存在截断为0(清0)O_APPEND        追加O_EXCL          文件存在报错
返回值:成功返回新文件描述符失败返回-1 

注意:

  • 有三个特殊的文件描述符:标准输入(0)、标准输出(1)、标准错误(2)
  • 文件描述符特点:
    • 非负整数
    • 取尚未被占用的最小的非负整数
    • 文件描述符是有上限的,到达上限后再打开会报错误

3. 关闭文件描述符

原型:int close(int fd);
功能:关闭文件描述符

4标准IO对应的文件IO的打开方式( 0664代表操作权限 rdx/rdx/rdx)

标准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

5. 文件IO读写

1. write

原型:ssize_t write(int fd, const void *buf, size_t count);
功能:向文件描述符中写入buf指向的count个字节的数据
参数:fd:文件描述符buf:要写入的数据空间首地址count:要写入的字节数
返回值:成功返回实际写入的字节数失败返回-1

ex:

http://www.dtcms.com/a/328349.html

相关文章:

  • C++右值引用学习笔记
  • wordpress获取菜单项的ID并输出
  • FPGA+护理:跨学科发展的探索(三)
  • 解锁大模型调优新姿势:LoRA微调全解析
  • 【算法】堆(Heap)的概念、懒删除(Lazy Deletion)与堆排序(Heap Sort)
  • 【实时Linux实战系列】复杂实时系统中的需求管理
  • Qt树形控件QTreeWidget详解:构建可编辑的多级课程结构
  • Nacos-2--Nacos1.x版本的通信原理
  • Web基础
  • 力扣47:全排列Ⅱ
  • 【8】Transformers快速入门:Decoder 分支和统计语言模型区别?
  • 图解软件系统组成
  • C#控制台项目,鼠标点击后线程会暂停
  • 什么是静态独享代理IP?如何选择可靠的静态独享代理IP供应商?
  • OAuth 2.0 授权码模式:安全架构解析
  • 龙虎榜——20250812
  • Java 8 Stream API 完全指南:优雅处理集合数据
  • 问卷系统测试报告
  • Unity UnityWebRequest常用操作
  • 从100到0.3美元:GPT-5用价格战血洗大模型赛道
  • 达梦数据闪回查询-快速恢复表
  • string 类元素访问方法
  • 《嵌入式Linux应用编程(四):Linux文件IO系统调用深度解析》
  • Origin2025b安装包免费,附Origin 2025安装教程
  • 智能机器人学习:智能机器人环境感知传感器介绍
  • 一个基于 PyTorch 的完整模型训练流程
  • 项目里程碑工具选型指南:16款优质系统
  • 基恩士3D视觉用于ABB机器人的KeyenceRobotVisionSetup.sys系统模块程序解析(九、KeyAbsMove)
  • 远程桌面环境协议对比
  • DDIA第五章:无主复制(去中心化复制)详解