当前位置: 首页 > 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列重新开始计数
  • [nginx文档翻译系列] 控制nginx
  • 【comparator, comparable】小总结
  • 【个人向】《HTTP图解》阅后小结
  • 2017 前端面试准备 - 收藏集 - 掘金
  • Akka系列(七):Actor持久化之Akka persistence
  • HomeBrew常规使用教程
  • IOS评论框不贴底(ios12新bug)
  • java取消线程实例
  • MySQL的数据类型
  • React-redux的原理以及使用
  • SQLServer之创建数据库快照
  • Windows Containers 大冒险: 容器网络
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 分布式任务队列Celery
  • 基于遗传算法的优化问题求解
  • 十年未变!安全,谁之责?(下)
  • 通过几道题目学习二叉搜索树
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • 阿里云ACE认证之理解CDN技术
  • # linux 中使用 visudo 命令,怎么保存退出?
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • # 达梦数据库知识点
  • $(function(){})与(function($){....})(jQuery)的区别
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (过滤器)Filter和(监听器)listener
  • (利用IDEA+Maven)定制属于自己的jar包
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (四)opengl函数加载和错误处理
  • (限时免费)震惊!流落人间的haproxy宝典被找到了!一切玄妙尽在此处!
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)Linux下编译安装log4cxx
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • .form文件_一篇文章学会文件上传
  • .Net 4.0并行库实用性演练