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

软件编程2-标准IO

一、IO基本概要

1、概念

        IO(Input/Output)指计算机系统中数据的输入和输出操作,涉及与外部设备(如磁盘、网络、终端等)的数据交换。程序通过IO接口读取外部数据(Input)或将内部数据写入外部设备(Output)

2、Linux系统中一切皆是文件

3、IO操作的对象是文件

4、文件分类

  • b(block,块设备文件)
    • 按块扫描信息的文件,称为块设备文件。通常存储类型的设备通常为块设备文件
    • 文件IO
  • c(character,字符设备文件)
    • 按字符扫描信息的文件,称为字符设备文件。一般设备通常为字符设备文件
    • 文件IO
  • d(directory,目录文件)
    • 目录文件,存放文件的文件夹
    • 目录IO/文件IO
  • -(普通文件)
    • 存放信息的文件
    • 标准IO/文件IO
  • l(link,链接文件)
    • 操作文件等价于操作文件指向的文件
    • 链接IO/文件IO
  • s(socket,套接字文件)
    • 用来进程间通信
    • 文件IO
  • p(pipe,管道文件)
    • 用来进程间通信
    • 文件IO

二、标准IO

1、概念

        通常用来操作普通文件

2、普通文件类型

  1. ASCII码文件:文件中的所有内容均为能够在屏幕上显示的ASCII码字符
    1. 程序、文本文件均为ASCII码文件
  2.  二进制文件:文件中的所有内容均为数据对应的二进制形式存放(包含一些不能在界面上显示的内容)
    1. ASCII码文件也是二进制文件
    2. 图片、音视频、压缩包均为二进制文件

3、标准IO接口

        1. fopen/fclose

        2. fgetc/fputc

        3. fgets/fputs

        4. fscanf/fprintf

        5. fread/fwrite

        6. fseek/rewind/ftel

4、操作步骤

        1. 打开文件

        2. 读写文件

        3. 关闭文件

5、文件的打开

(1)函数接口

(2)三种特殊的流

  • stdin:标准输入流
  • stdout:标准输出流
  • stderr:标准出错流
  • printf、puts、putchar都是通过stdout流实现在终端信息打印
  • scanf、gets、getchar都是通过stdin流实现获得终端信息
  • perror通过stderr流实现在终端打印出错信息

三、标准IO的缓存

1、 标准IO缓存的特点

        标准IO是一种有缓存的IO、效率高、实时性差

2、缓存的类型

(1)全缓存(4k):
  • 缓存区满刷新缓存
  • 刷新条件:
    • 缓存区满4k刷新
    • fflush函数强制刷新
    • fclose或者程序关闭刷新
  • 与文件建立的缓存一般为全缓存
(2)行缓存(假设1k):
  • 遇到\n刷新缓存区
  • 刷新条件:
    • 缓存区满1k刷新
    • 遇到\n刷新
    • fflush函数强制刷新
    • fclose或者程序关闭刷新
  • 与终端建立的缓存一般为行缓存(stdin、stdout均为行缓存)
(3)不缓存(0k):
  • 立即刷新不缓存
  • 刷新条件:
    • 不缓存立即刷新
  • 出错处理或者人机交互一般使用不缓存(stderr不缓存)

http://www.dtcms.com/a/325420.html

相关文章:

  • Maxscript实现在物体表面均匀散布的4种主流算法
  • C# 异步编程(计时器)
  • 大模型提示词工程实践:大语言模型文本转换实践
  • 实战:用 PyTorch 复现一个 3 层全连接网络,训练 MNIST,达到 95%+ 准确率
  • 软考高级资格推荐与选择建议
  • 大语言模型(LLM)核心概念与应用技术全解析:从Prompt设计到向量检索
  • STM32蓝牙模块驱动开发
  • 什么是结构化思维?什么是结构化编程?
  • 获取MaixPy系列开发板机器码——MaixHub 模型下载机器码获取方法
  • 【Python】在rk3588开发板排查内存泄漏问题过程记录
  • 视频前处理技术全解析:从基础到前沿
  • DreaMoving:基于扩散模型的可控视频生成框架
  • 安全合规4--下一代防火墙组网
  • GaussDB 数据库架构师修炼(十三)安全管理(1)-账号的管理
  • vue+flask基于规则的求职推荐系统
  • CentOS7搭建安全FTP服务器指南
  • 【安全发布】微软2025年07月漏洞通告
  • C语言如何安全的进行字符串拷贝
  • MQTT:Vue集成MQTT
  • GaussDB安全配置全景指南:构建企业级数据库防护体系
  • 【vue(一))路由】
  • uncalled4
  • 昆仑万维SkyReels-A3模型发布:照片开口说话,视频创作“一键改台词”
  • 使用行为树控制机器人(二) —— 黑板
  • 哈希、存储、连接:使用 ES|QL LOOKUP JOIN 的日志去重现代解决方案
  • Logistic Loss Function|逻辑回归代价函数
  • 实习学习记录
  • 集成电路学习:什么是URDF Parser统一机器人描述格式解析器
  • ttyd终端工具移植到OpenHarmony
  • 工业相机与智能相机的区别