IO学习--02

news/2024/7/27 8:52:50/文章来源:https://blog.csdn.net/2201_75327279/article/details/136638657

        标准IO由ANSI C库说明,在很多系统都实现了标准IO库。标准IO库处理很多细节,如缓冲的分配、优化长度执行IO等,使得用户不需要考虑选择合适的长度。标准IO是在系统调用函数构建的,便于用户使用。

        标准IO的所有操作都是围绕流(stream)来进行的,在标准IO中,这种流用FILE*描述。

        流一般分为文本流和二进制流,文本流中的数据以字符的形式存在,通常基于字符编码。二进制流中的数据则以二进制数字序列的形式存在。如果一个流中含有数字,二进制流会用相应的二进制数表示;如果流中有字符,则用一个字节的二进制ASCII码表示。

        从存储和传输效率的角度看,二进制流相较于文本流具有显著优势。因为二进制流在表示数据时不需要进行字符到数字的转换,所以它可以更直接、更紧凑地表示数据,从而节省存储空间并提高处理速度。例如,数字“2001”在文本流中需要用其ASCII码表示为四个字符,即'2'、'0'、'0'、'1',共占4字节。而在二进制流中,它只需要表示为“00000111 11010001”,用十六进制表示就是“07D1”,只占两字节。

        文本文件和二进制文件在逻辑上也有所不同。文本文件是基于字符编码的文件,而二进制文件则是基于值编码的文件。这意味着在二进制文件中,你可以根据具体应用指定某个值的意义,这可以看作是自定义编码。因此,二进制文件在编码层次上具有更大的灵活性。

        FILE指针:每个被使用的文件都在内存中开辟一个区域,用来存放文件的相关信息,这些信息保存在一个结构体中,该结构体由系统定义命名为FILE。

        标准IO提供了三种类型的缓存方式——全缓存、行缓存、无缓存。

        全缓存:当缓存区满,或者满足一定条件后就可刷新缓存区(fflush)。

        行缓存:当终端行满或者遇到换行符时进行刷新缓存区(fflush)。

        无缓存:标准IO库不对字符进行缓存,如stderr。

        标准IO也预定义三个流,分别是stdin、stdout、stderr,标准输入、标准输出、标准错误输出。

        

        使用fopen函数打开文件,第一个参数为文件的路径名,第二个参数对文件操作的权限,对文件进行只读操作时,使用r(文件必须存在),只写,使用w(文件不存在时则创建,会擦除文件内容),追加使用a(文件不存在则创建)。当第二个参数有b时,表示以二进制方式打开。

        以流方式打开文件后,可以通过下面三种非格式化方式对文件进行读写操作。

        使用fgetc和fputc对文件进行一个字符的读写,每次读取后文件指针向后偏移一位。

        使用fgets和fputs对文件进行一行读写。

        使用fread和fwrite对文件进行数量和块的读写。

        可使用feof判断文件是否结束。

        

        EOF为文件结束的返回标志。

        

        

        ferror可以检验文件是否出错。

        

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_1006643.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何安装“Ubuntu 20.04桌面版,在win10系统“?

一、 下载 https://ubuntu.com/tutorials/install-ubuntu-desktop#get-ubuntu 二、安装 1、 2、 3、 4、 5、 6、 7、 8、 9、 10、 11、 12、关闭安装,设置-分辨率 13、 14、 15、 16、 17、 18、 19、 20、等待安装 21、

C#,数值计算,希尔伯特矩阵(Hilbert Matrix)的算法与源代码

Hilbert, David (1862-1943) 1 希尔伯特(Hilbert) 德国数学家,在《几何学基础》中提出了第一套严格的几何公理(1899年)。他还证明了自己的系统是自洽的。他发明了一条简单的空间填充曲线,即埃里克魏斯汀的数学世界,即希尔伯特曲线,埃里克魏斯汀的数学世界,并证明了不…

Unity资源热更新----AssetBundle

13.1 资源热更新——AssetBundle1-1_哔哩哔哩_bilibili Resources 性能消耗较大 Resources文件夹大小不能超过2个G 获取AssetBundle中的资源 打包流程 选择图片后点击 创建文件夹,Editor优先编译 打包文件夹位置 using UnityEditor; using UnityEngine; public cla…

v-model 粗略解析

v-model 粗略解析 v-model是什么? 双向数据绑定,可以从data流向页面,也可以从页面流向data通常用于表单收集,v-model 默认绑定 value 值书写形式: v-model:value"" 或 v-model v-model原理是什么&#xf…

C#快速入门基础

本篇文章从最基础的C#编程开始学习,经过非常优秀的面向对象编程思想和方法的学习,为C#编程打下基础。 第 01 章 C#开发环境之VS使用和.NET平台基础 1.1 Visual Studio 开发环境 1.1.1 硬件环境 i5CPUi5CPU(建议 4核 4线程或以上 &#xff0…

WebMagic框架

1.webmagic框架 webmagic框架是一个Java实现的爬虫框架,底层依然是HttpClient和jsoup 组件: downloader:下载器组件PageProcessor:页面解析组件(必须自定义)scheculer:访问队列组件pipeline&am…

Excel数据转sql、json、html

1.Excel转Sql 利用Excel公式CONCATENATE可以实现“insert into table values(”与单元格A1的值拼接,这样一句insert语句就组合好了。 Excel数据: 完整公式: CONCATENATE("INSERT INTO volume(item, volume,update_time) VALUES("…

【测试】构建质量保证之路:编写测试用例的艺术

🍎个人博客:个人主页 🏆个人专栏:Linux ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 1. 确定测试目标: 2. 理解需求和规格: 3. 确定测试条件: 4. 编写测试用例: 结…

drone ci 是什么

Drone CI是一个开源的持续集成和持续部署(CI/CD)系统,它使用Docker容器技术自动化软件的构建、测试和部署过程。Drone的设计哲学是简单和易用,通过使用Docker容器,它可以很容易地创建隔离的环境来运行测试和部署任务&a…

【Algorithms 4】算法(第4版)学习笔记 17 - 4.3 最小生成树

文章目录 前言参考目录学习笔记1:介绍1.1:定义1.2:应用2:贪心算法 greedy algorithm2.1:简化假设2.2:切分定理2.3:demo 演示2.4:贪心算法的证明2.5:算法实现简要说明2.6&…

数据结构:图及相关算法讲解

图 1.图的基本概念2. 图的存储结构2.1邻接矩阵2.2邻接表2.3两种实现的比较 3.图的遍历3.1 图的广度优先遍历3.2 图的深度优先遍历 4.最小生成树4.1 Kruskal算法4.2 Prim算法4.3 两个算法比较 5.最短路径5.1两个抽象存储5.2单源最短路径--Dijkstra算法5.3单源最短路径--Bellman-…

Python Excel 文本编辑库之xlsxwriter使用详解

概要 在现代数据处理和报表生成中,Excel 文件是一个非常常见的格式。Python XlsxWriter 库是一个强大的工具,可以帮助开发者轻松创建和编辑 Excel 文件,并且具有高度的灵活性和可定制性。本文将全面介绍 XlsxWriter 库的原理、功能、用法,并通过丰富的示例代码来展示其强大…

C++ 作业 24/3/13

1、设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函数、析构函数和拷贝构造函数。 #include <iostream>using namespace std;c…

【老旧小区用电安全谁能管?】安科瑞智慧用电安全管理系统解决方案

行业背景 电气火灾指由电气故障引发的火灾。每年以30%的比例高居各类火灾原因之首。以50%到80%的比例高居重特大火灾之首。已成为业界重点关注的对象并为此进行着孜孜不倦的努力。 国务院安委会也于2017年5月至2020年4月年开展了为期3年的电气火灾综合治理工作。在各界努力的…

微信小程序之vue按钮切换内容变化

效果图如下&#xff1b; 上代码 <template><view class"content"><view class"searchDiv"><view class"paytab"><view class"buttab" v-for"(t,index) in tabList" :key"index" clic…

Address already in dse_JVM_Bind。端口莫名被占用【占用8080端口!!!】

文章目录 问题描述&#xff1a;Address already in dse:JVM_Bind问题可能的原因解决方案 问题描述&#xff1a;Address already in dse:JVM_Bind 问题可能的原因 当前端口已经有别的程序在占用着 我曾经被QQ占用过8080端口&#xff0c;Oracle启动了OracleHttp服务会占用8080端…

接口自动化框架(Pytest+request+Allure)

前言&#xff1a; 接口自动化是指模拟程序接口层面的自动化&#xff0c;由于接口不易变更&#xff0c;维护成本更小&#xff0c;所以深受各大公司的喜爱。 接口自动化包含2个部分&#xff0c;功能性的接口自动化测试和并发接口自动化测试。 本次文章着重介绍第一种&#xff0c…

InstantID Zero-shot Identity-Preserving Generation in Seconds

InstantID: Zero-shot Identity-Preserving Generation in Seconds TL; DR&#xff1a;InstantID IP-Adapter (Face) ControlNet&#xff0c;实现了具有较高保真度的人脸 ID 生成。 方法 InstantID 想做到的事情是&#xff1a;给定一张参考人脸 ID 图片&#xff0c;生成该…

*地宫取宝c++

题目 输入样例1&#xff1a; 2 2 2 1 2 2 1输出样例1&#xff1a; 2输入样例2&#xff1a; 2 3 2 1 2 3 2 1 5输出样例2&#xff1a; 14 思路 题目说从入口开始&#xff0c;只能向右或向下行走到达右下角&#xff0c;类似“摘花生”这道题的模型。题目又说只有当格子里的宝…

C语言中如何进行内存管理

主页&#xff1a;17_Kevin-CSDN博客 收录专栏&#xff1a;《C语言》 C语言是一种强大而灵活的编程语言&#xff0c;但与其他高级语言不同&#xff0c;它要求程序员自己负责内存的管理。正确的内存管理对于程序的性能和稳定性至关重要。 一、引言 C 语言是一门广泛使用的编程语…