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

文件操作/标准IO(20250214)

1. 文件操作

1.1 必要性

保存数据至ROM(非易失性存储器)

Linux中的一切皆是文件,学习文件操作可以操作硬件设备

2 Linux文件类型(7种)

  1. b(block)      块设备文件    存储设备
  2. c(character)字符设备文件     输入输出设备:键盘、鼠标、显示器
  3. d(directory) 目录文件
  4. -(regular)     普通文件          *.c ,*.txt,a.out,*.jpg,*.mp4
  5. l(link)           软连接文件       
  6. s(socket)     套接字文件       网络通信
  7. p(pipe)         管道文件          进程间通信   

3 Linux下文件操作的方法

        I: input   O:output

3.1 标准IO

        标准C库提供的一套文件操作接口

3.2 文件IO(属于系统调用)

        Linux内核为Linux系统提供的一套文件操作接口

4 文件操作思想

  • 打开文件
  • 读文件、写文件
  • 关闭文件

 5. 标准IO

  • 打开文件                   fopen()
  • 读文件、写文件        fgetc()/fputc、fgets()/fputs()、fread()/fwrite()
  • 关闭文件                   fclose()

标准IO:将一个打开的文件和一个文件流指针(FILE *)关联,后面操作文件,皆面向文件流指针 

终端也是文件

操作系统默认打开了三个流:

  • stdin          标准输入流        键盘
  • stdout        标准输出流        显示屏(终端)
  • stderr         标准出错流        显示屏(终端)

6. 函数接口

6.1  FILE *fopen(const char *pathname, const char *mode);

文件流:数据从文件流入和流出体现的字节流

FILE * ------>文件流指针

功能:打开一个文件,并且将文件关联到一个流上
参数:
        pathname : 要打开的文件名的指针
        mode:打开方式
                "r"           以只读方式打开,文件必须存在
                "r+"         以读写方式打开,文件必须存在
                "w"          以只写的方式打开,文件不存在:创建,文件存在:清空
                "w+"        以读写方式打开,文件不存在:创建,文件存在:清空
                "a"           以追加写的方式打开,文件不存在:创建
                "a+"         以读写方式打开,文件不存在:创建,文件存在:可追加写或从头读
返回值:
        成功:FILE *  :文件流指针
        失败:NULL

6.2 int fputc(int c, FILE *stream);

功能:将一个字符写入到文件
参数:
        c:写入的字符
        stream:要写入的文件流指针
返回值:
        成功:写入字符的ASCII值
        失败:EOF        (-1)

od -c 文件名 :查看文件中的字符

6.3 int fclose(FILE *stream);

功能:关闭一个文件
参数:stream:文件流指针
返回值:
        成功:0
        失败:EOF (-1)

6.4 int fgetc(FILE *stream);

功能:从文件中读取一个字符
参数:
        stream:要读的文件流指针
返回值:
        成功:读到的字符的ASCII值
        失败:EOF
        到达文件末尾:EOF

fgetc 和 fputc 是非常基础且实用的文件读写函数,它们可以方便地实现逐个字节的文件读写操作,适用于处理 ASCII 文件和二进制文件。在处理二进制文件时,记得使用二进制模式打开文件。

6.5 int fputs(const char *s, FILE *stream);
功能:将字符串写入到文件
参数:
        s:要写入的字符串的首地址
        stream:文件流指针

返回值:
        成功:>=0
        失败:EOF

6.6 char *fgets(char *s, int size, FILE *stream);

功能:从文件中读取一行数据(遇到\n停止)
参数:
        s:读取到的数据存放的首地址
        size:期待读到的字节数
        stream:要读的文件流指针
返回值:
        成功:返回存储数据的首地址(s)
        失败:NULL
        读到文件末尾:NULL

6.7 fgets和gets的区别:

  1. fgets会保留\n字符,gets会去掉\n
  2. gets是危险的,没有size的限制
  3. fgets最多读取size-1个字符
  4. fgets遇到\n停止读取
 

 

相关文章:

  • 文件系统惹(细)
  • springboot mybatis-plus 集成多数据源
  • GF1 遥感影像镶嵌拼接
  • C++ 多态
  • 2.5 使用注解进行单元测试详解
  • 【vue3】实现pdf在线预览的几种方式
  • 论软件评估方法
  • rv1103b编译opencv
  • 家里装修想用投影仪,如何选择?装修中应该注意什么?
  • 浮点数二分
  • 数智化的力量:柏强制药构建医药高质量发展的新引擎
  • 场外个股期权下单后多久成交?场外个股期权对投资组合的影响
  • 《pyqt+open3d》第三章——icp配准点对面——稳健性提升
  • 【前端框架】Vue3 中 `setup` 函数的作用和使用方式
  • 【Elasticsearch】Token Graphs
  • 【LeetCode】739. 每日温度
  • rust学习二、入门之运行单个脚本
  • vue前端可视化大屏页面适配方案
  • 日本90年代经济泡沫初期是什么情况?
  • 面试经典150题——字典树
  • 天津做网站的公司有哪家/东莞网络营销推广公司
  • 软件开发业务流程图/网站优化公司怎么选
  • 汕头哪里学网站建设最好/网站推广关键词排名优化
  • wap 网站源码/橙子建站官网
  • 网站排名突然掉没了/中央刚刚宣布大消息
  • 宿州学校网站建设/营销网络的建设有哪些