• C语言进阶 文件操作知识(上)


    一. 为什么使用文件

    我们在前面学习完结构体开始写通讯录的时候 当通讯录运行起来我们可以给它传输数据 此时数据是存放在内存中 当程序退出的时候 通讯录中的数据自然也就不复存在了
    如果我们想要对于输入的数据进行持久化保存 这个时候我们就可以想到把数据存放在磁盘文件 存放在数据库等方式

    所以说我们使用文件是为了数据的持久化保存

    二. 什么是文件

    我们在讨论文件的时候一般有两种 一种是程序文件 一种是数据文件

    2.1 程序文件

    包括源程序文件 目标文件 可执行文件

    我依次截图给大家看看

    源程序文件
    在这里插入图片描述
    目标文件

    在这里插入图片描述
    可执行文件

    在这里插入图片描述

    2.2 数据文件

    文件的内容不一定是程序 也可以是程序运行时读写的数据 比如程序运行所需要读取数据的文件 或输出内容的文件

    我们本章着重讨论数据文件

    在这里插入图片描述

    2.3 文件名

    一个文件要有一个唯一的文件标识 以便于用户的识别和引用

    文件名通常包含三部分 文件路径+文件名主干+文件后缀

    例如 c:\code\test.txt

    不知道这里大家还记不记得以前讲的转义字符的事

    转义字符相关知识

    如果我们要在c语言程序内使用的话 应该是这么打出来

    c:\code\test.txt

    三. 文件的打开和关闭

    3.1 文件指针

    缓冲文件系统中 关键的概念是“文件类型指针” 简称“文件指针”

    我们先不看定义 直接开始用

    在这里插入图片描述
    我们说 形如

    FILE* pf
    

    这种格式 我们就把它称为文件指针 它指向一个文件

    我们通过文件指针变量就能够找到与它关联的文件

    在这里插入图片描述

    3.2 文件的打开和关闭

    我们在读写文件之前应该打开它 在使用结束之后应该关闭它

    当文件读取失败的时候 它会返回一个空指针

    直接上代码

    在这里插入图片描述

    当为r模式的时候 如果没有文件 则会返回一个空指针 并且会报错误信息

    在这里插入图片描述
    但是当为w或者a模式的时候 如果不存在这个文件 就会自己新建一个 并且不会报错误信息

    四. 文件的顺序读写

    功能 函数名 适用于
    字符输入函数 fgetc 所有输入流
    字符输出函数 fputc 所有输出流
    文本行输入函数 fgets 所有输入流
    文本行输出函数 fputs 所有输出流
    格式化输入函数 fscanf 所有输入流
    格式化输出函数 fprintf 所有输出流
    二进制输入 fread 文件
    二进制输出 fwrite 文件

    我们还是直接上代码来看效果

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    那这次我们尝试从数据文件输入

    在这里插入图片描述
    当然啦 我们这里记得要改为只读模式 不然就会没办法读取数据

    fputs 输出一行字符串
    在这里插入图片描述

    fgets 读取一行字符串

    在这里插入图片描述
    这里要注意的是gets的读取格式有点特殊 是这样子的

    在这里插入图片描述

    五. 文件的随机读写

    5.1 fseek

    根据文件指针的位置和偏移量来定位文件指针

    int fseek ( FILE * stream, long int offset, int origin );
    

    在这里插入图片描述
    这里就是个很好的例子

    定位到偏移量为9的位置 也就是n的位置上 替换成 “ sam”

    5.2 ftell

    返回文件指针相对于起始位置的偏移量

    long int ftell ( FILE * stream );
    

    5.3 rewind

    让文件指针的位置回到文件的起始位置

    void rewind ( FILE * stream );
    

    这个很简单 记住指针回到了起始位置就好

    以上就是本篇博客的全部内容啦 由于博主才疏学浅 所以难免会出现纰漏 希望大佬们看到错误之后能够

    不吝赐教 在评论区或者私信指正 博主一定及时修正

    那么大家下期再见咯

  • 相关阅读:
    C++概述
    NPS:使用 Windows NPS Server 部署 802.1X 无线认证(1)
    2:开发环境搭建-Java Web
    即拼七人团增加消费者复购欲望,为企业赋能
    视觉SLAM14讲笔记-第7讲-视觉里程计1
    10_18Qt
    C++ MFC窗口与WPF 窗口的相互嵌套
    JVM和Java体系结构
    代驾预约小程序系统源码 :提起预约,避免排队 带完整搭建教程
    OpenHarmony 系统能力 SystemCapability 使用指南
  • 原文地址:https://blog.csdn.net/meihaoshy/article/details/127116792