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

Linux软件编程:标准IO(ASCII文件)

  • Linux系统中一切皆文件
  • IO操作对象是文件

一、文件

(一)一段数据的集合

(二)文件通常存放在外存中,掉电后数据不会丢失

(三)分类(文件IO)

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

二、标准IO

(一)通常用来操作普通文件

(二)普通文件类型

        1.ASCII码文件(程序、文本文件):文件中的所有内容均为能够在屏幕上显示的ASCII码字符

        2.二进制文件(ASCII码文件、图片、音视频、压缩包):文件中的所有内容均以数据对应的二进制的形式存放(包括一些不能在界面显示的文件)

(三)标准IO的接口

        1.fopen/fclose

        2.fgetc/fputc

        3.fgets/fputs

        4.fscanf/fprintf

        5.fread/fwrite        

        6.fseek/rewind/ftell

        7.操作步骤

                ①打开文件

                ②读写文件

                ③关闭文件

(四)文件的打开

       1.已经打开的三个特殊流

                stdin:标准输入流(scanf、gets、getchar)

                stdout:标准输出流(printf、puts、putchar)

                stderr:标准出错流(perror)

        

        2.函数接口

                ①fopen

        

                ②fclose

                ③fputc(putchar()等价于fputc(ch,stdout))

                ④fgetc(ch=getchar()等价于ch=fgets(stdin))

                ⑥fputs(fpputs不会多打印\n字符,puts会多打印一个\n字符)

                ⑦fgets(gets会去掉从终端接收的\n字符,fgets不会去掉从终端接收的\n字符)

                ⑧fscanf

                ⑨fprintf

(四)标准IO的缓存

        1.标准IO缓存

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

        2.缓存的类型

                ①全缓存(4k):与文件建立的缓存(让内核操作文件)

                        a.缓存区满4k刷新

                        b.fflush函数强制刷新

                        c.fclose或者程序关闭刷新

                ②行缓存(1k):与终端建立的缓存(让内核操作终端)

                        a.遇到\n刷新

                        b.缓存区满1k刷新

                        c.fflush函数强制刷新

                        d.fclose或者程序关闭刷新

                ③不缓存(0k):不缓存立即刷新。出错处理或者人机交互一般使用不缓存(stderr)

三、man手册(man 章节号 搜索内容)

        1.标准命令

        2.系统调用

        3.库函数

        4.设备说明

        5.文件格式

        6.娱乐

        7.杂项

        8.管理员命令

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

相关文章:

  • Discuz论坛和java应用的架构部署
  • 视频剪辑的工作流程
  • 笔试——Day35
  • 用 Flink SQL 和 Paimon 打造实时数仓:深度解析与实践指南
  • GitHub的简单使用方法----(1)
  • 论文阅读 arxiv 2024 MemGPT: Towards LLMs as Operating Systems
  • 平衡二叉树(AVL)解析与实现
  • python每日一题 1的数量 非常简单
  • 松灵机器人 scout ros2 galactic 驱动 安装,并且跑巡线算法
  • 深入剖析 C++ STL 中的 std::list 容器
  • 一篇文章解决Unity没有添加模块选项的问题
  • Linux系统编程 | 线程池
  • Redis7 GEO功能介绍与电商场景案例解析
  • Static CXL Switch:静态CXL交换机相关内容
  • leecode875 爱吃香蕉的珂珂
  • 【Unity】打包学习笔记
  • pip 和 conda,到底用哪个安装?
  • 【已解决】【obsidian插件开发】svg图标路径不正确
  • 第16届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2025年1月12日真题
  • 机器翻译:一文掌握序列到序列(Seq2Seq)模型(包括手写Seq2Seq模型)
  • 豆包 + 蘑兔 AI:音乐创作的梦幻组合
  • UE5太空射击游戏入门(二):场景搭建与自动飞行
  • JS-第二十三天-正则
  • Vue2篇——第二章 Vue从指令修饰符到侦听器的全面解析(重点)
  • 反射之Reflect
  • 网页复杂文本信息解析提取-Crawl4AI+Ollama
  • week1+2+3
  • Python自学05-分支结构
  • 2025年08月11日Github流行趋势
  • Deepoc如何让传统码垛机器人获得“类人决策力“​