标准I/O与文件I/O
一、概念
- 标准IO:标准IO是指程序与标准输入(stdin)、标准输出(stdout)和标准错误(stderr)之间的输入输出操作。通常用于与用户交互或输出调试信息。
- 文件IO:文件IO是指程序与文件系统之间的输入输出操作,用于读取或写入文件。
二、主要区别
| 特性 | 标准IO | 文件IO |
|---|---|---|
| 输入源/输出目标 | 标准输入(stdin)、标准输出(stdout)、标准错误(stderr) | 文件系统中的文件 |
| 缓冲机制 | 通常有缓冲(行缓冲、全缓冲) | 可以设置缓冲,默认情况下通常无缓冲 |
| 操作函数 | printf, scanf, gets, puts 等 | fopen, fclose, fread, fwrite 等 |
| 灵活性 | 适用于简单的输入输出操作 | 适用于复杂的文件操作,如随机访问、追加等 |
| 性能 | 通常较快,因为有缓冲机制 | 取决于文件系统和磁盘性能 |
三、核心函数对比
| 功能 | 标准 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 检测。 |
相关文章:
标准I/O与文件I/O
一、概念 标准IO:标准IO是指程序与标准输入(stdin)、标准输出(stdout)和标准错误(stderr)之间的输入输出操作。通常用于与用户交互或输出调试信息。文件IO:文件IO是指程序与文件系统…...
【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter20-JavaScript API
二十、JavaScript API JavaScript API 随着 Web 浏览器能力的增加,其复杂性也在迅速增加。从很多方面看,现代 Web 浏览器已经成为构建于诸多规范之上、集不同 API 于一身的“瑞士军刀”。浏览器规范的生态在某种程度上是混乱而无序的。一些规范如 HTML5&…...
C#初级教程(7)——初级期末检测
练习 1:计算圆的周长和面积 改编题目:编写一个 C# 程序,让用户输入圆的半径,然后计算并输出该圆的周长和面积,结果保留两位小数。 using System;class CircleCalculation {static void Main(){const double pi 3.14…...
RT-Thread+STM32L475VET6——TF 卡文件系统
文章目录 前言一、板载资源二、具体步骤1.打开CubeMX进行USB配置1.1 使用外部高速时钟,并修改时钟树1.2 打开SPI1,参数默认即可(SPI根据自己需求调整)1.3 打开串口,参数默认1.4 生成工程 2.配置SPI2.1 打开SPI驱动2.2 声明使用SPI…...
排序链表--字节跳动
少年的书桌上没有虚度的光阴 题目描述 请你对链表进行排序 思路分析 核心思想:归并排序 有三个部分 链表排序实现 1. merge 函数 21.见 合并两个有序链表, 首先创建一个虚拟头节点 newhead,并使用指针 tail 来构建合并后的链表。 通过…...
[论文解析]OmniRe: Omni Urban Scene Reconstruction
OmniRe: Omni Urban Scene Reconstruction 论文地址:https://arxiv.org/abs/2408.16760 代码地址:https://github.com/ziyc/drivestudio 项目地址:https://ziyc.github.io/omnire/ 论文解读 总结 这篇论文代表了一种重建的方向࿰…...
【微服务优化】ELK日志聚合与查询性能提升实战指南
网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…...
Docker实战-使用docker compose搭建博客
docker run 部署 创建blog网络 [rootk8s-master ~]# docker network create blog 8f533a5a1ec65eae3f98c0ae5a76014a3ab1bf3c087ad952cdc100cc7a658948 [rootk8s-master ~]# docker network ls NETWORK ID NAME DRIVER SCOPE 8f533a5a1ec6 blog bridge …...
python 虚拟机的使用方式
Python虚拟机(PVM)是Python语言的核心运行机制,它通过解释和执行字节码来运行Python代码。以下是关于Python虚拟机的详细使用方式: 1. Python虚拟机的基本概念 Python虚拟机(PVM)是一个抽象的计算机&…...
【JT/T 808协议】808 协议开发笔记 ② ( 终端注册 | 终端注册应答 | 字符编码转换网站 )
文章目录 一、消息头 数据1、消息头拼接2、消息 ID 字段3、消息体属性 字段4、终端手机号 字段5、终端流水号 字段 二、消息体 数据三、校验码计算四、最终计算结果五、终端注册应答1、分解终端应答数据2、终端应答 消息体 数据 六、字符编码转换网站 一、消息头 数据 1、消息头…...
番茄工作法html实现
对比了deepseek-r1-online和本地部署的14b的版本,输出的输出的html页面。 在线满血版的功能比较强大,可以一次完成所有要求。14b版本的功能有一些欠缺,但是基本功能也是写了出来了。 input write a html named Pomodoro-clock which “hel…...
抓包工具 wireshark
1.什么是抓包工具 抓包工具是什么?-CSDN博客 2.wireshark的安装 【抓包工具】win 10 / win 11:WireShark 下载、安装、使用_windows抓包工具-CSDN博客 3.wireshark的基础操作 Wireshark零基础使用教程(超详细) - 元宇宙-Meta…...
51单片机学习之旅——定时器
打开软件 1与其它等于其它,0与其它等于0 1或其它等于1,0或其它等于其它 TMODTMOD&0xF0;//0xF01111 0000进行与操作,高四位保持,低四位清零,高四位定时器1,低四位定时器0 TMODTMOD|0x01;//0x010000 0…...
hot100_139. 单词拆分
hot100_139. 单词拆分 思路 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 示例 1: 输入:…...
Linux firewalld 常用命令
本文参考RedHat官网文章How to configure a firewall on Linux with firewalld。 Firewalld 是守护进程名,对应命令为firewall-cmd。帮助详见以下命令: $ firewall-cmd --helpUsage: firewall-cmd [OPTIONS...]General Options-h, --help Pr…...
《网络安全入门实战手册》
0经验转行网络安全,个人分享一下学习中总结的文档,以下为目录可以点击标题看对应文章,欢迎评论区讨论,后期会发更多安全相关的学习资料等。希望跟大家一起进步。 第1章:网络安全基础知识 1、什么是网络安全ÿ…...
SQLMesh 系列教程7- 详解 seed 模型
SQLMesh 是一个强大的数据建模和管道管理工具,允许用户通过 SQL 语句定义数据模型并进行版本控制。Seed 模型是 SQLMesh 中的一种特殊模型,主要用于初始化和填充基础数据集。它通常包含静态数据,如参考数据和配置数据,旨在为后续的…...
windows11那些事
一.windows11简介 Windows11是微软公司于2021年发布的桌面端操作系统,它带来了许多新的功能和改进,旨在提升用户体验和工作效率。以下是一些关于Windows 11的基础知识和使用技巧: 通用搜索:通过任务栏上的搜索或按Windows…...
VividTalk:南京大学、阿里巴巴等机构联合研发的开源3D说话人生成框架
目录 一、前言二、项目概述三、技术架构四、优势特点五、性能评估六、应用场景七、结论与展望 一、前言 在当今人工智能飞速发展的时代,人机交互的方式正不断创新和优化。VividTalk作为南京大学、阿里巴巴、字节跳动和南开大学联合开发的一项开创性技术,…...
pyside6学习专栏(三):自定义QLabel标签扩展类QLabelEx
标签是界面设计中最常用的控件,本文演示了如何基于PySide6的QLabex控件类扩展定义QLabelEX类,以实现更少的编码完成各种图像、彩色文本、动画的加载和显示,丰富界面显示 本示例演示了QLabel和其扩展类QLabelEx分别显示文本、图像、动画的使用…...
后“智驾平权”时代,谁为安全冗余和体验升级“买单”
线控底盘,正在成为新势力争夺下一个技术普及红利的新赛点。 尤其是进入2025年,比亚迪、长安等一线传统自主品牌率先开启高阶智驾的普及战,加上此前已经普及的智能座舱,舱驾智能的「科技平权」进一步加速行业启动「线控底盘」上车窗…...
springboot408-基于Java的樱洵宾馆住宿管理系统(源码+数据库+纯前后端分离+部署讲解等)
💕💕作者: 爱笑学姐 💕💕个人简介:十年Java,Python美女程序员一枚,精通计算机专业前后端各类框架。 💕💕各类成品Java毕设 。javaweb,ssm…...
C语言中 %* 的用法总结
C语言中 %* 的用法总结 一、scanf 中的 %* 作用:跳过输入字段,读取数据但不存储到变量。语法:%*[格式] 示例格式:%*d(跳过一个整数)、%*s(跳过一个字符串)。 适用场景:…...
EasyRTC:基于WebRTC与P2P技术,开启智能硬件音视频交互的全新时代
在数字化浪潮的席卷下,智能硬件已成为我们日常生活的重要组成部分,从智能家居到智能穿戴,从工业物联网到远程协作,设备间的互联互通已成为不可或缺的趋势。然而,高效、低延迟且稳定的音视频交互一直是智能硬件领域亟待…...
鸿蒙NEXT应用App测试-通用测试
注意:大家记得学完通用测试记得再学鸿蒙专项测试 https://blog.csdn.net/weixin_51166786/article/details/145768653 注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,大家感兴趣可以学习下 如果大家觉得博主文章…...
transfmer学习认识
整体架构 1.自注意机制 1.1.softmax 在机器学习和深度学习中,softmax 函数是一个常用的激活函数,用于将一个向量转换为一个概率分布。softmax 函数的公式如下: …...
人工智能(AI)的不同维度分类
人工智能(AI)的分类 对机器学习进行分类的方式多种多样,可以根据算法的特性、学习方式、任务类型等不同维度进行分类这些分类都不是互斥的: 1、按数据模态不同:图像,文本,语音,多态等 2、按目标函数不同:判别式模型…...
三、linux字符驱动详解
在上一节完成NFS开发环境的搭建后,本节将探讨Linux字符设备驱动的开发。字符设备驱动作为Linux内核的重要组成部分,主要负责管理与字符设备(如串口、键盘等)的交互,并为用户空间程序提供统一的读写操作接口。 驱动代码…...
谈谈 ES 6.8 到 7.10 的功能变迁(1)- 性能优化篇
前言 ES 7.10 可能是现在比较常见的 ES 版本。但是对于一些相迭代比较慢的早期业务系统来说,ES 6.8 是一个名副其实的“钉子户”。 借着工作内升级调研的任务东风,我整理从 ES 6.8 到 ES 7.10 ELastic 重点列出的新增功能和优化内容。将分为 6 个篇幅给…...
