C语言_文件操作(下)

news2025/2/28 6:46:01

目录

8. 文件的随机读写

8.1 fseek

8.2 ftell

8.3 rewind

​9. 文件结束判定

10. perror 


8. 文件的随机读写

假设文件中存放的是abcdef,如下图,通常在读文件时,是先读取首元素地址,也就是文件指针指向a,每读一次文件指针向后++;

本节内容将去实现:如何再读文件时,一开始读到的就不是首元素,而可能是c d e 等等。

8.1 fseek

想要实现文件随机读写的功能;首先打开文件,就需要定位到文件指针

fseek:根据文件指针的位置和偏移量来定位文件指针。

函数原型:int fseek(FILE* stream,long int offset,int origin);

头文件:stdio.h

参数:第一个参数文件指针pf;第二个参数偏移量;第三个参数是起始位置,也可以说是文件指针的当前位置;

对于参数三:C语言给出了3个选择 

1. 当前位置,也就是文件指针目前指向的位置;SEEK_CUR---文件指针的当前位置

2. 以文件的末尾为起始位置进行偏移,所以的偏移量都是负数;SEEK_END---文件的末尾位置

3. 以文件的起始位置为初始点进行偏移,所有的偏移量都是正数;SEEK_SET---文件的起始位置

第三个参数设置为SEEK_END,以结尾位置作为当前位置进行偏移;第二个参数设置为-2; 

8.2 ftell

ftell函数:会返回文件指针相对于起始位置的偏移量;

函数原型:long int ftell(FILE* stream);返回类型长整型long int;

 如果没有通过fseek定位文件指针,那么默认的文件指针指向起始位置;那么文件指针相对于起始位置的偏移量就是0;

 如果首先fgetc(pf)读取一个字符,那么fgetc默认会从文件的起始位置进行读取,fgetc以后,文件指针会指向第一个元素的地址;此时用ftell函数返回文件指针相对于起始位置的偏移量就是1;

8.3 rewind

rewind函数:让文件指针的位置回到起始位置;

函数原型:void rewind(FILE* stream);

9. 文件结束判定

被错误使用的  feof    文件结尾处EOF作为结束标志存放

切记:在文件读取过程中,能用feof函数的返回值直接用来判断文件是否结束,该函数是用来判断当文件读取结束的时候,是读取失败结束,还是遇到文件结尾结束;

1. 文本文件读取是否结束,判断返回值是否为EOF(fgetc),或者NULL(fgets);EOF---end of file(文件结束标志)

2. 二进制文件的读取结束判断,判断fread返回值是否小于实际要读的个数;

EOF的定义,返回值为-1;当我们的文件是空的,此时读取文件,EOF的返回值就是-1;

10. perror 

strerror(errno)函数会把错误信息对应的错误码返回;

perror函数会将函数内设定的参数打印出来;并且默认打印冒号+空格;在 设定内容+冒号+空格 后面会打印错误信息的错误码 ,并且该函数不需要引用头文件;相对于strerror函数,perror函数使用起来更加简单方便。

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

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

相关文章

【Linux进程信号】

Linux进程信号技术应用角度的信号信号的发送与记录信号处理常见方式产生信号通过终端按键产生信号通过系统函数向进程发信号由软件条件产生信号由硬件异常产生信号阻塞信号信号其他相关常见概念在内核中的表示sigset_t信号集操作函数sigprocmasksigpending捕捉信号内核空间与用…

three.js 之 入门篇 5之几何体的认知( 顶点创建矩阵、炫酷三角形科技物体、基础网格材质 material )

目录three.js 之 入门篇 5之几何体的认知01BufferGeometry设置顶点创建矩阵02 生产炫酷三角形科技物体03 常见的网格几何体 geometry04 基础网格材质 material04-1 初识别材质与纹理04-2 初识别材质与纹理 ( 平移、旋转 )04-3 纹理显示设置( …

C语言——指针面试题详解

🐒个人主页:平凡的小苏📚学习格言:别人可以拷贝我的模式,但不能拷贝我不断往前的激情目录 1. 指针和数组笔试题解析 一维数组 字符数组 二维数组 2. 指针笔试题 笔试题1: 笔试题2: 笔试题…

ffmpeg 颜色空间转换分析

颜色空间转换有很多相关标准: https://docs.opencv.org/3.4.0/de/d25/imgproc_color_conversions.html https://www.itu.int/rec/R-REC-BT.601-4-199407-S/en ffmpeg命令行颜色空间转换是通过调用vf_scale中的swscale来进行转码。 我们通过gdb来调试ffmpeg. 首先编译…

《Getting Started with NLP》chap11:Named-entity recognition

《Getting Started with NLP》chap11:Named-entity recognition 最近需要做一些NER相关的任务,来学习一下这本书的第十一章 文章目录《Getting Started with NLP》chap11:Named-entity recognition11.1 Named entity recognition: Definition…

jar转成dex文件

jar转成dex文件 dx 可以利用android studio中的dx工具。 可以看到android的tool安装位置: 在此路径下的如下目录有dx.bat,这个正是我们需要使用的工具。 D:\sdk\build-tools\30.0.3将dx.bat添加到环境变量 基本指令 > dx --dex --output 输出路径 待转化的jar包C

高性能网络模式:Reactor 和 Proactor

文章目录演进多 Reactor 多进程 / 线程Proactor总结演进 如果要让服务器服务多个客户端,那么最直接的方式就是为每一条连接创建线程。其实创建进程也是可以的,原理是一样的,进程和线程的区别在于线程比较轻量级些,线程的创建和线…

【Dash搭建可视化网站】项目12:全球恐怖主义数据大屏制作步骤详解

全球恐怖主义数据大屏制作步骤详解1 项目效果图2 项目架构3 文件介绍和功能完善3.1 assets文件夹介绍3.2 app.py和index.py文件完善3.3 header.py文件完善3.4 filteritem.py文件完善3.5 api.py文件和api.ipynb文件完善3.6 staclbarline.py文件完善3.7 piechart.py文件完善3.8 m…

IO多路复用之select、poll、epoll之间的区别总结

一、IO多路复用基本概念 select、poll、epoll都是IO多路复用的机制。IO多路复用就是通过一种机制,让一个进程/线程可以监视多个描述符,一旦某个描述符就绪(一般是读写就绪),能够通知应用程序进行相应的读写操作。 I/…

并网逆变器学习笔记5---三电平DPWM

参考文献:《中压三电平全功率风电变流器关键技术研究---任康乐》 1、调制策略分析 DPWM由于其在任意时刻均有一相钳位在某个电平,使得该相的功率器件不发生开关动作,因而可以大大降低开关损耗(平均降低1/3)&#xff…

Java多线程案例——定时器

一,定时器1.定时器的概念定时器是Java开发中一个重要的组件(功能类似于闹钟),可以指定一个任务在多长时间后执行(尤其在网络编程的时候,如果网络卡顿很长时间没有响应用户的需求,此时可以使用定…

分享|UWB使用频段大幅收窄,新标准对于行业发展是好是坏?

近日,工信部无线电管理局发布了《超宽带(UWB)设备无线电管理规定(征求意见稿)》(以下简称“新版《规定》”)。 根据新版《规定》,未来国内UWB技术的使用频段为:7235-875…

seo的基本知识(概述网站内部优化和外部优化)

了解网站外部优化的4大重点 网站优化的时候都会重视网站的外部优化,所以网站外部优化的4大重点!今天就来和大家说一说! 1.高质量的内容和外链 未来的SEO道路高质量的有价值的内容是非常重要的,还有就是高质量的外链也是重要之…

北大硕士LeetCode算法专题课-查找相关问题

黑马算法面试专题 北大硕士LeetCode算法专题课-字符串相关问题 北大硕士LeetCode算法专题课-数组相关问题_​​​​​​ 北大硕士LeetCode算法专题课-基础算法查找_ 北大硕士LeetCode算法专题课-基础算法之排序_客 北大硕士LeetCode算法专题课---算法复杂度介绍_…

Neo4j框架学习之一安装和使用

文章目录1、何为Neo4j2、安装和使用2.1 安装2.2 基础概念1、何为Neo4j ​ Neo4j是一个高性能的NOSQL图形数据库,是一个嵌入式的、基于磁盘的,数据结果为网格(图)、具备完全的事务特性的Java持久化引擎。 数据结构 ​ 在一个图中包含两种基本的数据类型…

从浏览器里输入URL构建你的前端知识体系

嗨!我是团子,好久不见~ 记得22年寒假复习八股的时候,一直在苦恼怎样才能把八股的内容真正的转换为自己的知识。毕竟光靠死记硬背每个知识点,是不能在面试中给面试官留下不错的印象的。后面在整理《浏览器里输入URL后发生了什么》…

Stellarium 1.2 正式发布

导读Stellarium 1.2 已发布。Stellarium 是一款免费开源 GPL(自由软件基金会 GNU 通用公共许可证)软件,它使用 OpenGL 图形接口对星空进行实时渲染。 软件可以模拟肉眼、双筒望远镜和小型天文等观察天空,根据观测者所处时间和位置…

项目管理:项目经理如何创建项目日程计划表

当项目经理接手项目后,要做好项目的日程安排,这是决定项目是否成功完成的最重要任务之一。 项目经理都希望项目按照制定好的进度计划完工,但在实际的情况中,总会有那么一两个项目会出现进度延迟的情况,管理者可以使用…

忆享科技戟星安全实验室|OSS的STS模式授权案例

戟星安全实验室忆享科技旗下高端的网络安全攻防服务团队.安服内容包括渗透测试、代码审计、应急响应、漏洞研究、威胁情报、安全运维、攻防演练等。本文约957字,阅读约需3分钟。前言《漏洞挖掘系列》将作为一个期刊持续更新,我们会将项目中所遇到的觉得有…

图像编辑Photoshop 2023中文新

Photoshop2023从照片编辑和合成到数字绘画、动画和图形设计-只要能想到,就能在Photoshop中创作出来。相信大家都有在用之前的版本,这款软件功能丰富,实用性很强,有着大量的功能用户都可以用上,不管是美化还是滤镜&…