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)更新缓冲区

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

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

  • 20
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值