标准IO——文件定位、文件IO

news2024/11/27 1:29:57

续:feof、ferror(检测一个流是否出错)、clearerr(清除一个流出错的标记)。

一、标准IO文件定位

1、fseek(定位)

        int fseek(FILE *stream , long offset(偏移长度) , int whence(偏移起始位置))

其中whence:三种宏——>SEEK_SET(开头) 、SEEKZ-CUR(当前) 、SEEK_END(末尾)

2、ftell

        long ftell(FILE *stream)

3、rewind

        void rewind(FILE *stream)           复位到开头

二、缓冲区

1、缓冲区在内核中,为了使高速设备(内存) 与 低速设备(硬盘)速度匹配。

2、分类:

(1)行缓冲

有1024字节(1k)空间,适用对象:在写终端(屏幕)terminal时。

刷新条件:①遇到 \n 刷新    ②缓存区满刷新     ③程序正常结束刷新     ④fflush刷新  fflush(stdout)

(2)全缓冲

有4096字节(4k)空间,适用对象:用于文件的读写。

刷新条件:①缓存区满刷新     ②程序正常结束刷新     ③fflush刷新  fflush(fp)

(3)无缓冲

0k空间,适用对象:用于出错处理信息的输出。stderr

三、文件IO

标准IO(C库中) ==封装了==> 系统调用(syscall)==都发送给==> linux内核。

<unistd.h>(系统调用中) <===>  <stdio.h>(C库中)。

1、在系统调用中,操作系统为了方便用户使用系统功能而对外提供的一组系统函数。称为文件IO。        适合:设备类文件。

2、特征

(1)无缓冲区;(2)操作对象不是流,是文件描述符

文件描述符——>本质:很小的非负整数。(代表即将被操作的资源)  0-1023

                与流对象匹配:0<——>stdin;1<——>stdout;2<——>stderr。因此文件一般从3开始。

3、步骤

(1)打开(open)   (2)读写(read/write)   (3)关闭(close)

1)open

        int open(const char *pathname , int flags(标志位) , mode_t mode(执行权限))

flags:O_RDONLY、O_WRONLY、O_RDWR、O_CREAT(创建)、O_TRUNC(清空)、O_APPEND(追加)

执行权限:一般文件都为 0666;有O_CREAT时必须写权限。

2)write

        ssize_t write(int fd,const void *buf,size_t count(有效长度(实际大小strlen)))

read

          ssize_t read(int fd,void *buf,size_t count(最大读取长度(sizeof)))

其返回值为实际读到的大小。

3)close

        int close(int fd)

4)lseek

        off_t lseek(int fd , off_t offset , int whence)

定位到光标的位置<——>一个函数实现fseek、rewind、ftell所有的功能。

返回值为从文件开头到当前pos位置的字节数。

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

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

相关文章

ROS 7上实现私网互通方案

一、背景: 第一个私网现状:连接公域网是由tp-link进行拨号链接使用动态公网ip,内部网段是192.168.1.0/24 第二个私网现状:连接公域网是机房的固定公网ip,内部网段为10.0.0.0/16二、目标 安全的打通192.168.1.0/24和10.0.0.0/16的网络, 使得前者局域网中的机器能够安全访…

全域运营系统质量对比:各大源码厂商搭建效能解析!

随着全域运营时代的到来&#xff0c;全域运营商的申请热度日渐上升&#xff0c;各大全域运营系统及其背后的源码厂商也因此备受关注。本期&#xff0c;小编将围绕全域运营系统的市场份额、搭建体系以及落地运营三个方面的内容&#xff0c;以帮助大家对各大源码厂商在全域运营系…

Probit 回归模型及 Stata 具体操作步骤

目录 一、文献综述 二、理论原理 三、实证模型 四、稳健性检验 五、程序代码及解释 一、文献综述 Probit 回归模型作为一种重要的统计分析工具&#xff0c;在众多学科领域中发挥着关键作用&#xff0c;吸引了众多学者的深入研究和广泛应用。 在经济学领域&#xff0c;Probi…

python-打分(赛氪OJ)

[题目描述] 最近学校组织了校园歌手大赛&#xff0c;并且让全校师生为歌手评分&#xff08;分数的范围为 1−100 分&#xff09;&#xff0c;但由于投票系统太过于落后&#xff0c;最后的计票中发现了如下几种票&#xff1a; - 分数大于 100 - 分数小于 1 - 一个最高分 - 一个最…

TOPIK韩语等级考试|韩语语法:被动词和使动词

韩语语法&#xff1a; 被动词与主动词 글쓰기 관련 강좌나 책에서 우리 문장을 쓸 때 웬만하면 피동형을 쓰지 말라는 주장을 흔히 접하게 된다. 능동형 동사를 사용하면 글이 늘어지지 않아 간결해지고 힘찬 문장이 되는 게 사실이다. 그러나 이 주장이 우리글에서 피동형 동…

IDEA自定义注释模版

1.类&#xff08;接口/枚举等同理&#xff09; 2.方法模版 先自定义一个模版组&#xff0c;然后在里面添加模版名&#xff0c;触发快捷键&#xff08;Tab/Enter&#xff09;&#xff0c;模版描述&#xff0c;哪些语言中应用 模版中的自定义参数params和returns可以自动展开参数…

vue3.0学习笔记(五)——Vue3 状态管理 - Pinia

1. 什么是Pinia Pinia是Vue的最新状态管理工具&#xff0c;是Vuex的替代品。pinia官网&#xff1a;Pinia | The intuitive store for Vue.js 提供更加简单的API&#xff08;去掉了mutation&#xff09; 提供符合&#xff0c;组合式风格的API&#xff08;和Vue3新语法统一&…

PhPMyadmin-漏洞复现

前情提要&#xff1a;首先将我们的PHP版本设置在5.5以上 一、通过⽇志⽂件拿Shell 1.搭建好环境后进行管理员登录 2.进入后点击SQL进行sql命令行操作 3.在输入框内输入set global general_logon; 将日志保存设置为开启状态 4.在输入 set global general_log_file 你要将日志…

未授权访问漏洞(非重点 中)

6.Hadoop 1.在 fofa 使用 port"8088" && app"Hadoop" 获取资源 2.打开后若无需登录,则存在漏洞 7.ActiveMQ 1.在 fofa 使用 body"ActiveMQ" && port"8161" 获取资源 2.打开后若点击登录,默认账户密码为 admin/adm…

无线领夹麦克风怎么挑选,2024年8月领夹麦挑选不踩雷攻略

在数字时代的浪潮中&#xff0c;每个人都可以成为自己故事的讲述者。从街头巷尾的Vlog达人&#xff0c;到专业演播室的主持人&#xff0c;再到远程教育的讲师&#xff0c;无线领夹麦克风正悄然改变着音频采集的方式。它不再局限于传统录音棚的束缚&#xff0c;而是融入了日常生…

C:指针学习(1)-学习笔记

目录 前言&#xff1a; 知识回顾&#xff1a; 1、const 1.1 const修饰普通变量 1.2 const修饰指针变量 1.3 总结&#xff1a; 2、指针运算 2.1 指针-整数 2.2 指针-指针 2.3 指针的关系运算 3、指针的使用 结语&#xff1a; 前言&#xff1a; 距离上一次更新关于初…

Java语言程序设计——篇十一(6)

&#x1f33f;&#x1f33f;&#x1f33f;跟随博主脚步&#xff0c;从这里开始→博主主页&#x1f33f;&#x1f33f;&#x1f33f; 欢迎大家&#xff1a;这里是我的学习笔记、总结知识的地方&#xff0c;喜欢的话请三连&#xff0c;有问题可以私信&#x1f333;&#x1f333;&…

【Python_PySide6学习笔记(三十七)】清空QLayout中所有控件的方法

清空QLayout中所有控件的方法 清空QLayout中所有控件的方法前言正文1、takeAt()方法2、自定义f_clearLayoutFunc()方法3、setParent(None)方法 清空QLayout中所有控件的方法 前言 在 GUI 开发中&#xff0c;当我们使用 PySide6&#xff08;或兼容的PyQt6&#xff09;的 QVBox…

Sol盗u、sol链上的USDT盗窃:警惕恶意智能合约

随着区块链技术的普及&#xff0c;Solana链上的应用和用户数量不断增加。然而&#xff0c;这也为不法分子提供了可乘之机&#xff0c;恶意智能合约逐渐成为盗取USDT等加密资产的一种常见手段。本文将详细介绍恶意智能合约的工作原理&#xff0c;并提供防范措施&#xff0c;帮助…

【OpenCV C++20 学习笔记】Canny边缘检测

Canny边缘检测 原理步骤 API实例 原理 Canny边缘检测也称为“最优检测”(optimal detector)&#xff0c;它的开发主要有以下3个目标&#xff1a; 低错误率&#xff1a;只检测真实存在的边缘良好的定位&#xff1a;检测出来的边缘与真实的边缘之间的距离要达到最小最小的反馈&…

报错Process exited with an error: 1 (Exit value: 1)

问题描述 运行springboot程序&#xff0c;程序报错 Process exited with an error: 1 (Exit value: 1)打开错误描述&#xff0c;发现是端口8080被占用&#xff08;我们的端口号未必一致&#xff0c;改成你报错的端口&#xff09; 问题分析 明确报错内容后&#xff0c;关闭…

SNAT、DNAT 防火墙规则

文章目录 一、SNAT原理与应用案列:1.给服务器和路由器(以liunx替代)做好准备工作(安装iptables和关闭firewalld防火墙)2.如果安装了iptables,设置80端口的访问为允许(liunx1:充当服务器)3.设置ens36网卡的地址为10.0.0.1(liunx2:充当路由器)4.修改liunx1服务器的ip地址和网关5.…

【Android Studio】图标一键生成 Image Asset Studio(一键各机型适配图标生成工具-告别一个一个替换)

文章目录 方法一&#xff1a;原始替换方法二&#xff1a;Image Asset Studio 方法一&#xff1a;原始替换 https://blog.csdn.net/xzzteach/article/details/140821856 方法二&#xff1a;Image Asset Studio 自动替换

易捷OA协同办公系统 ShowPic接口任意文件读取漏洞复现 [附POC]

文章目录 易捷OA协同办公系统 ShowPic接口任意文件读取漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现易捷OA协同办公系统 ShowPic接口任意文件读取漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用文章内的相…

在当今的大环境下,怎么做好一名嵌入式工程师?

不知不觉2024年已经过了一半了&#xff0c;我在csdn也更新了不少文章&#xff0c;也有很多想说的&#xff0c;没有地方发&#xff0c;想来想去&#xff0c;也就发在这里了&#xff0c;反正也没有多少人看 2024年目前大环境大家都应该很清楚&#xff0c;最新消息&#xff0c;英…