C语言:文件操作

程序退出,内存上的数据销毁,将信息放在文件中,保证持久保存

文件

什么是文件:

在磁盘或者固态硬盘上的一段已命名的存储区

分类:
从文件功能的角度

  • 程序文件:源程序文件,目标文件,可执行程序
  • 数据文件:文件的内容不一定是程序,而是程序运行时读写的数据

根据数据的组织形式

  • 二进制文件:以二进制方式存储
  • 文本文件:以ASCII码的形式存储
    在文件中,看到10000这个数字是字符1,0,0,0,0的ASCII码值,是文本文件

常见处理数据的输入输出都是以终端为对象的,即从终端的键盘输入数据,运行结果显示到显示器上。
将信息输出到磁盘上,需要时再从磁盘上把数据读取到内存中使用,这里处理的就是磁盘上文件。

文件在执行时内存所需要做的工作

文件指针

每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放该文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。
这些信息是保存在一个结构体变量中。该结构体类型是有系统声明的,取名FILE(文件指针)
在这里插入图片描述

FILE* pf定义一个文件指针

  • printf、scanf两个函数叫标准输入输出函数,这里标准的含义就是:输出是打印到
    屏幕,输入是从键盘上获取数据,
  • 文件的读写->是输入和输出的重定向
    (重定向的意思就是:重新定义其输入输出方向,这是相对标准而言)

文件缓冲区

程序要读文件或写文件时,系统会为当前操作自动创建一块内存区域,这块内存区域乘为文件缓冲区

  • 从内存向磁盘输出数据,
    先送至内存中的缓冲区,充满缓冲区后,才一起送到磁盘上;
  • 从磁盘向计算机读入数据
    则从磁盘文件中读取数据输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐个将数据送到程序数据区;
  • 要想及时输出就需要刷新缓冲区,例如\n,就是一种刷新缓冲区的方式;

在这里插入图片描述缓冲区的大小根据c编译系统决定。

操作文件

1.文件的打开与关闭函数

在这里插入图片描述
在这里插入图片描述

  • b代表操作二进制文件
  • +代表增加读写功能
  • 只有w才能创建不存在的文件,并且w是覆盖写

2.文本行输入输出函数

在这里插入图片描述

3.格式化输入输出函数(有格式的数据输入到文件中)

在这里插入图片描述

在这里插入图片描述

4.二进制输入输出

从左往右执行
fwrite (&s, sizeof(struct s), 1, pf)
//被写入信息地址,一个元素的大小,写几个元素,要写入的哪个文件流中

调整文件指针位置

以当前位置为起点,根据偏移量调整pf文件指针
在这里插入图片描述
向前偏移offset<0,向后偏移offset>0

6.ftell与rewind

ftell文件指针的位置在哪
在这里插入图片描述

7.文件结束的判定

EOF:end of file,文件结束的标记

feof()

  • 不是判断文件是否结束,而是判断文件是因什么原因结束

文本文件读取结束

  1. fgetc判断是否为EOF;
  2. fgets判断返回值是否为NULL;

二进制文件读取结束

  • fread判断返回值是否小于实际要读的个数;

ferror():测试流上是否有一个错误
perorr(”随便一个字符串”),打印结果:“字符串:出错误信息”

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值