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

C语言学习笔记 Day16(C10文件管理--下)

Day16 内容梳理:

C语言学习笔记 Day14(文件管理--上)-CSDN博客

C语言学习笔记 Day15(文件管理--中)-CSDN博客

目录

Chapter 10  文件操作

10.5 文件状态

10.6 文件的随机读写 fseek()、rewind()

(1)fseek():移动光标并开始读写

(2)rewind():将光标重置回文件开头

10.7 文件的删除remove()、重命名rename()

(1)删除remove():

(2)重命名、移动位置rename():

10.8 文件缓冲区

(1)基础概念

(2)更新缓冲区


Chapter 10  文件操作

10.5 文件状态

获取文件的大小

10.6 文件的随机读写 fseek()、rewind()

(1)fseek():移动光标并开始读写

之前的文件都是顺序读写,而在可以在随机读写中,改变文件光标的位置。

先创建好一个名为“随机读写.txt”的文本文件,写入如下内容:

fseek()函数的三个参数:文件指针、offset位移数、whence移动的起始位置

offset:往左偏移是负数,往右偏移是正数

whence有三种类型的参数:

SEEK_SET:从文件开头移动offset个字节

SEEK_CUR:从当前位置移动offset个字节

SEEK_END:从文件末尾移动offset个字节

因为文本文件中,每一行的结尾是\r\n(不会显示在文本中),算两个字节,所以算offset的时候需要加上这2个字节。

\r\n存在于除了末尾那行以外的其他行,所以从末尾开始偏移的话不需要考虑\r\n的字节。

代码如下,把三种类型的whence参数都试写了一遍:

上图代码的打印结果如下:正常打印了两行,跳到上一行打印了一下,跳到文件开头行打印了一下,又跳到文件末尾行打印了一下

(2)rewind():将光标重置回文件开头

使用方式:rewind(文件指针)

作用效果等同于fseek(文件指针,0,SEEK_SET)

10.7 文件的删除remove()、重命名rename()

(1)删除remove():

需要注意的是,以这样的方式删除的文件不会进入到回收站中,难以找回,慎用remove()。

删除这个文件:

代码如下:

运行结果: 

文件中也确实没有abc.txt了:

(2)重命名、移动位置rename():

①重命名:

把“解密1.txt”更名为”解密加密的原始语句.txt”

代码和效果如下:

里面的文本没有发生变动,只有文件名被改了。

②移动位置:

把D盘的“加密1.txt”移动至D盘的“Program Files”文件夹中

移动效果:

10.8 文件缓冲区

(1)基础概念

通常用“缓冲文件系统”来处理数据文件。

缓冲文件系统是指系统自动在内存区为程序中每个在使用的文件开辟一个文件缓冲区,暂存从内存向磁盘运输的文件,装满整个缓冲区后才一起送到磁盘中。就像是定时定点到站的公交车一样。

缓冲区的作用是协调低速的输入输出设备和高速的CPU,避免低速的输入输出设备占用CPU,从而解放出CPU并使其能够高效率工作。

缓冲区有两种保存方式,一种是按固定时间间隔保存数据(比如每10秒保存一下),另一种是按固定数据量保存数据(比如每100字保存一下)。

(2)更新缓冲区

不太建议实际写代码时按下图中这样写,因为频繁和硬盘交互会损伤硬盘。最好是手动规定一个字节长度,代码到这个长度了再保存。

一边输入,一边保存到了文本文件中:

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 《机器学习》文本数据分析之关键词提取、TF-IDF、项目实现 <上>
  • 移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——10.继承
  • CCF-CSP 2024 --重塑矩阵1,2c语言题解
  • 网络编程9.3
  • 基础学习之——Kubernetes
  • vscode好用的快捷键整理~
  • 基础学习之——Docker Compose的安装和使用
  • 不管夫妻还是情人,想要长相厮守、生活幸福美满,就这两个字!
  • 宁波银行资产规模首超3万亿,高成长性被机构清一色看好
  • 维度不固定的多维数组形参笔记
  • Swift 运算符
  • spring boot 项目 prometheus 自定义指标收集区分应用环境集群实例ip,使用 grafana 查询--方法耗时分位数指标
  • HarmonyOS 开发范式、应用模型
  • Electron 项目实战 02:打包和自动更新
  • 有temp表包含A,B两列,使用SQL,对B列进行处理,形成C列,按A列顺序,B列值不变,则C列累计技术,B列值变化,则C列重新开始计数
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • Apache的80端口被占用以及访问时报错403
  • CAP 一致性协议及应用解析
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • Docker: 容器互访的三种方式
  • emacs初体验
  • IOS评论框不贴底(ios12新bug)
  • Java 最常见的 200+ 面试题:面试必备
  • MobX
  • 那些被忽略的 JavaScript 数组方法细节
  • 日剧·日综资源集合(建议收藏)
  • 手机端车牌号码键盘的vue组件
  • 数据结构java版之冒泡排序及优化
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 推荐一个React的管理后台框架
  • 译自由幺半群
  • python最赚钱的4个方向,你最心动的是哪个?
  • ​​​​​​​STM32通过SPI硬件读写W25Q64
  • ​如何使用QGIS制作三维建筑
  • #pragma once与条件编译
  • #微信小程序:微信小程序常见的配置传旨
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (leetcode学习)236. 二叉树的最近公共祖先
  • (多级缓存)多级缓存
  • (分布式缓存)Redis分片集群
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (南京观海微电子)——I3C协议介绍
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (一)80c52学习之旅-起始篇
  • (译) 函数式 JS #1:简介
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .Net CoreRabbitMQ消息存储可靠机制
  • .NET NPOI导出Excel详解
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .NET简谈设计模式之(单件模式)
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化
  • /etc/motd and /etc/issue