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

标准I/O与文件I/O

一、概念

  • 标准IO:标准IO是指程序与标准输入(stdin)、标准输出(stdout)和标准错误(stderr)之间的输入输出操作。通常用于与用户交互或输出调试信息。
  • 文件IO:文件IO是指程序与文件系统之间的输入输出操作,用于读取或写入文件。

二、主要区别

       特性                                    标准IO                     文件IO
输入源/输出目标标准输入(stdin)、标准输出(stdout)、标准错误(stderr)文件系统中的文件
缓冲机制通常有缓冲(行缓冲、全缓冲)可以设置缓冲,默认情况下通常无缓冲
操作函数printfscanfgetsputs 等fopenfclosefreadfwrite 等
灵活性适用于简单的输入输出操作适用于复杂的文件操作,如随机访问、追加等
性能通常较快,因为有缓冲机制取决于文件系统和磁盘性能

三、核心函数对比 

核心函数
功能  标准 I/O 函数  文件 I/O 函数描述
打开文件 fopen() open()打开文件并返回文件指针或文件描述符。fopen() 提供缓冲,open() 不提供。
关闭文件 fclose()close()关闭文件并释放资源。fclose() 会刷新缓冲区,close() 直接关闭文件描述符。
读取数据 fread() read()从文件中读取数据。fread() 是缓冲的,read() 是直接的系统调用。
写入数据  fwrite()  write() 向文件中写入数据。fwrite() 是缓冲的,write() 是直接的系统调用。
读取字符fgetc() read()    从文件中读取一个字符。fgetc() 是缓冲的,read() 需手动处理。
写入字符  fputc() write()向文件中写入一个字符。fputc() 是缓冲的,write() 需手动处理。
读取字符串 fgets()  read()   从文件中读取一行字符串。fgets() 是缓冲的,read() 需手动处理。
写入字符串 fputs()   write() 向文件中写入字符串。fputs() 是缓冲的,write() 需手动处理。
文件定位 fseek()   lseek() 移动文件指针到指定位置。fseek() 用于标准 I/O,lseek() 用于文件 I/O。
刷新缓冲区 fflush()   fsync()  刷新缓冲区到文件。fflush() 用于标准 I/O,fsync() 用于文件 I/O。
错误检测   ferror()    检查 errno  检测文件操作错误。ferror() 用于标准 I/O,文件 I/O 通过 errno 检测。

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

相关文章:

  • LeetCode51
  • SpringSecurity设置白名单
  • epoll_event的概念和使用案例
  • 如何保存爬虫获取商品评论的数据?
  • 【AI时代】基于AnythingLLM+ Ollama + DeepSeek 搭建本地知识库
  • GeoHD - 一种用于智慧城市热点探测的Python工具箱
  • redis缓存与Mysql数据一致性,要如何解决?
  • Unity贴图与模型相关知识
  • GTSAM 库详细介绍与使用指南
  • DeepSeek全链路开发指南:从零搭建智能问答系统到API无缝对接【内含知识库实战】
  • 微信小程序数据绑定与事件处理:打造动态交互体验
  • 【Altium Designer】差分对等长设置以及绕线
  • Linux基本指令(三)+ 权限
  • Unity中点乘和叉乘对于我们来说的作用是什么?
  • 【愚公系列】《鸿蒙原生应用开发从零基础到多实战》002-TypeScript 类型系统详解
  • Windows安装MySQL教程
  • 基于 QT6 工业非标自动化设备上位机软件开发与设计
  • 对Revit事务机制的一些推测
  • libxls库的编译以及基于Visual studio的配置
  • Qt开发中有关内存管理方面常见的问题分析与解决方案
  • 简讯:Rust 2024 edition and v1.85.0 已发布
  • 【Shell编程 / 9】脚本实战项目:从基础到进阶的自动化管理方案
  • uniapp修改picker-view样式
  • 什么是“可迭代”
  • Springboot的简单推荐实现
  • 机器学习面试八股文——决战金三银四
  • wsl配置
  • 提升C++项目编译速度
  • LDR6020 驱动的一拖多快充线,革新充电体验
  • DeepSeek 助力 Vue 开发:打造丝滑的二维码生成(QR Code)