Day20 文件IO

news2024/11/25 16:31:19

feof(FILE*)         用于检测文件是否到达结尾

ferror(FILE*)      检测文件是否发生错误

clearerr(FILE*)  清除错误

一.文件IO的特性

1 没有缓存区
2 操作对象不在是流,而是文件描述符
3文件描述符     :很小的非负的整数 int   
内核每打开一个文件就会获得一个文件 描述符

二.文件IO的文件定位

1.fseek

将文件中的文件指针从whence位置开始向左或右偏移 |offest| 个字节长度。

whence:

SEEK_SET
SEEK_CUR
SEEK_END

2.ftell

告诉文件的大小

3.rewind

让文件指针指向起始位置。

三.文件IO操作相关函数

1.open

O_WRONLY|O_CREAT|O_TRUNC                          清空创建文件/清空文件并写入
O_RDWR|O_CREAT|O_TRUNC                              清空创建文件/清空文件并读取
O_RDONLY                                                               只读取文件
O_RDWR                                                                  只写入文件
O_WRONLY|O_CREAT|O_APPEND                        创建文件追加/直接追加写入文件
O_RDWR|O_CREAT|O_APPEND                            创建文件追加/直接追加写入并可读取文件

功能:
获得一个文件描述符

参数:
pathname:文件名
flags:
O_RDONLY |
O_WRONLY
O_RDWR
O_CREAT, 创建文件 
O_EXCL,需要和O_CREAT同时使用,表示新建的文件不能存在,成功,否则open就会失败
O_NOCTTY,不是终端设备
O_TRUNC文件内容清空
O_APPEND追加
O_ASYNC异步io,什么时候io不确定,
O_NONBLOCK非阻塞 


2.read /write 

功能:
通过文件描述符读取文件中的数据
参数:
fd:文件描述符
buf:存放数据空间的首地址
count:要读到数据的个数
返回值:
成功返回读到数据的个数
失败返回-1

功能:
通过文件描述符向文件中写一串数据
参数:
fd:文件描述符
buf:要写入文件的字符串的首地址
count:要写入字符的个数
返回值:
成功返回实际写入的个数
失败返回-1


3.close

关闭文件

4.lseek

功能:
定位光标的位置
参数:
fd:文件描述符
offset:偏移量
正:向后偏移
负:向前偏移
零:不偏移
whence:
SEEK_SET
SEEK_CUR
SEEK_END
返回值:
成功返回偏移量
失败返回-1

四.缓冲区

1.行缓冲:

行缓冲,1k, terminal,主要用于人机交互stdout
缓存区满或者遇到\n刷新 1024
行缓存多是关于终端的一些操作
1.遇到\n刷新
2.缓存区满刷新
3.程序结束刷新
4.fflush刷新  fflush(stdout);

2.全缓冲:

全缓冲,4k,主要用于文件的读写
缓存区满刷新缓存区 4096
对普通文件进行标准IO操作,建立
的缓存一般为全缓存
刷新条件:
1.缓存区满刷新
2.程序结束刷新
3.fflush来刷新  fflush(fp);
 

3.无缓冲:

无缓冲,0k  主要用于出错处理信息的输出 stderr 
不对数据缓存直接刷新
printf();==>>stdout 
fprintf(strerr,"fopen error %s",filename);
界面交互 出错处理
使用gdb查看,FILE结构体,或使用写入数据测试缓冲区。
缓冲区的大小是可以设置
 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

埃拉托斯特尼筛法,厄拉多塞筛算法,C#实现

埃拉托斯特尼筛法,厄拉多塞筛算法 这个 很多地方的定义不一样。 虽然名字相同,但是具体的定义还是有差距。 有的地方描述的是: 厄拉多塞筛算法(Eratosthenes Sieve)是一种求素数的方法,由古希腊数学家厄拉多塞提出。它的原理是&…

如何下载学术论文、专利(最全)——包含免费方法

经常有同学问,如何下载论文 一、中文论文 万方(在校生一般学校已购买权限,具体可看自己学校图书馆) 网址:https://www.wanfangdata.com.cn/ 2. 知网(在校生一般学校已购买权限,具体可看自己学…

【ML】transform 之 encode 及其实现细节

transform 之 encode 及其实现细节 1. transform (seq2seq) 是什么2. transform (seq2seq) 具体如何实现3. transform (seq2seq) 可以解决哪些类型的问题4. 补充问题4.1 残差连接(Residual Connection)是什么如何实现4.1.2 残差连接的具体实现&#xff1…

一文搞懂后端面试之MySQL MVCC【中间件 | 数据库 | MySQL | 隔离级别 | Read View】

为什么需要MVCC 锁本身就是用于并发控制的,那么为什么InnoDB还要引入MVCC,读写都加锁不就可以控制住并发吗? 锁确实可以,但是性能太差。如果是纯粹的锁,那么写和写、读和写、读和读之间都是互斥的。如果是读写锁&…

C#TreeView控件应用

1、代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace TestApp…

两数之和 II(LeetCode)

题目 给你一个下标从 1 开始的整数数组 ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 的两个数。 如果设这两个数分别是 和 ,则 。 以长度为 的整数数组 形式返回这两个整数的下标 和 。 你可以假设每个输入…

【从零开始一步步学习VSOA开发】并行RPC服务端

并行RPC服务端 概念 之前 RPC 使用方式中的所有回调函数都是串行执行的,VSOA 为 C 语言开发版本提供了并行处理 RPC 请求的功能,开发者可以通过并发 RPC 相关接口创建线程池并行处理 RPC 请求。并发服务模式通过多线程来实现,能有效提高响应…

8.06 C++作业

使用类定义实现隔离储存计算 1.头文件 #ifndef CLASS_H #define CLASS_H #include <iostream> using namespace std;class rect { private:int width;int height; public:void init(int width,int height);void show();void setw(int w);void seth(int h); };#endif //…

gradle安装及配置

文章目录 一、下载安装包二、解压文件三、环境变量配置四、验证安装结果五、配置国内源六、IDEA配置 一、下载安装包 从gradle官网下载安装包&#xff0c;官网地址为&#xff1a;https://gradle.org/releases/ 我们只需要下载编译好的文件即可。 二、解压文件 解压文件到指定…

睡前故事—星际旅行者

文章目录 欢迎来到《Bedtime Stories Time》。这是一个我们倾听、放松、并逐渐入睡的播客。感谢你收听并支持我们&#xff0c;希望你能将这个播客作为你睡前例行活动的一部分。今晚我们将讲述《星际旅行者》的故事。一个宁静的夜晚&#xff0c;希望你现在已经感到平静、放松&am…

PXE的使用

配置前提 1、挂载镜像源&#xff0c;可正常下载软件 [rootredhat-7 ~]# mkdir -p /rhel7 ----创建挂载点目录 [rootredhat-7 ~]# mount /dev/sr0 /rhel7/ ----挂载镜像源至挂载点&#xff08;临时挂载&#xff0c;重启失效&#xff09;[rootredhat-7 ~]# vim /etc/yum.repos.…

[CR]厚云填补_GridDehazeNet+

GridDehazeNet: An Enhanced Multi-Scale Network With Intra-Task Knowledge Transfer for Single Image Dehazing Abstract 雾霾等恶劣天气条件会降低自动驾驶和智能交通系统的性能。作为一种潜在的补救措施&#xff0c;我们提出了一种增强的多尺度网络&#xff0c;称为GridD…

鸿蒙(API 12 Beta2版)媒体开发【使用AudioRenderer开发音频播放功能】

音频播放开发概述 如何选择音频播放开发方式 系统提供了多样化的API&#xff0c;来帮助开发者完成音频播放的开发&#xff0c;不同的API适用于不同音频数据格式、音频资源来源、音频使用场景&#xff0c;甚至是不同开发语言。因此&#xff0c;选择合适的音频播放API&#xff…

conda pack迁移环境

文章目录 下载conda pack打包已有环境还原环境 因为有的服务器没有网络&#xff0c;如果想要安装自己的虚拟环境&#xff0c;就需要在有网络的服务器安装好环境后迁移到没有网络的服务器。conda-pack是一个命令行工具&#xff0c;用于打包 conda 环境&#xff0c;pip inatall和…

【Python实战】完美实现 WPS 会员功能,自动化处理 PDF 文档(建议收藏)

数字化办公已成常态&#xff0c;文档管理和处理是很多小伙伴的日常工作。 PDF&#xff08;Portable Document Format&#xff09;文档因其跨平台兼容性和格式固定性而备受青睐。 然而&#xff0c;对于非WPS会员用户而言&#xff0c;一些高级功能如批量处理、格式转换、添加水…

【SpringMVC】详细介绍SpringMVC的执行流程

目录 1. 概念 2.SpringMVC工作原理 3. springMVC的简单使用 1.在pom.xml中导入相关依赖 2.在web.xml中配置dispatcherServlet 3.创建springMVC.xml核心配置文件 1. 概念 什么是MVC&#xff1f; MVC是下面三个组件的简写&#xff0c;模型&#xff08;Model&#xff09;、视图…

mathtype7永久激活密钥咋子哪里获取?2024最新破解版下载附安装教程

在数字化时代&#xff0c;我们每天都与文字和符号打交道。无论是撰写论文、准备报告还是编写程序&#xff0c;数学公式的输入都是不可或缺的一环。但你有没有遇到过这样的困扰&#xff1a;在Word文档中编辑复杂的数学公式时&#xff0c;操作繁琐且不直观&#xff1f; 别担心&a…

鸿蒙图形开发【3D引擎接口示例】

介绍 本实例主要介绍3D引擎提供的接口功能。提供了ohos.graphics.scene中接口的功能演示。 3D引擎渲染的画面会被显示在Component3D这一控件中。点击按钮触发不同的功能&#xff0c;用户可以观察渲染画面的改变。 效果预览 使用说明 在主界面&#xff0c;可以点击按钮进入不…

【书生大模型实战营第三期】基础岛 第1关 书生大模型全链路开源体系

欢迎大家参与第三期书生大模型实战营&#xff01;&#xff01;&#xff01; 1. 书生浦语开源历程 从23年7月开始&#xff0c;直到今年7月&#xff0c;书生浦语先后开源了 InternLM、InternLM2 核性能更好的 InternLM2.5。 2. InternLM2.5 的优势 其中&#xff0c;最新的 Intern…

计算机语言-CSP初赛知识点整理

历年真题 [2020-CSP-J-第2题] 编译器的主要功能( ) A. 将源程序翻译成机器指令代码 B. 将源程序重新组合 C. 将低级语言翻译成高级语言 D. 将一种高级语言翻译成另一种高级语言 [2021-CSP-J-第1题] 以下不属于面向对象程序设计语言的是&#xff08;&#xff09;。 A. C B. Pyt…