当前位置: 首页 > news >正文

文件操作(下)

标题的顺序是接着之前写的,希望这篇博客对你有帮助


七. 随机读写函数

实际上,无论是读还是写,在一次调用顺序读写函数,文件指针会移到已经读过或者写过的下一个位置,从那个位置开始下一次读和写(在文件没有关闭的前提下,如果关闭了,文件指针会回到最开始的地方进行读写)

1. fseek

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

跳转网站

fseek - C++ Reference

注意事项:

  1. int fseek ( FILE * stream, long int offset, int origin )

返回类型 :int

     2. 参数 : stream , offset , origin

stream 是流的指针(适用于文件

offset 是距离 orgin 位置的偏移量(正数是向右偏移几格,负数是向左偏移几格)

origin 只有三种:

SEEK_SET : 文件指针回到起始位置

SEEK_CUR : 文件指针处于现在位置不动

SEEK_END : 文件指针回到文章的结尾位置

参数类型是 FILE * , long int , int

    3. 引用头文件

<stdio.h>


举例

文件的内容:

#include<stdio.h>
int main()
{FILE* pa = fopen("data.txt", "r");printf("%c", fgetc(pa));printf("%c", fgetc(pa));fseek(pa, -1, SEEK_CUR);printf("%c", fgetc(pa));fseek(pa, 3, SEEK_SET);printf("%c", fgetc(pa));fseek(pa, -1, SEEK_END);printf("%c", fgetc(pa));fclose(pa);pa = NULL;return 0;
}

运行结果:

画图分析:

第一次读取数据:

第二次读取数据:

第三次读取数据:

第四次读取数据:

第五次读取数据:

2. ftell

返回文件指针相对于起始位置的偏移量

跳转网站

ftell - C++ Reference

注意事项:

  1. long int ftell ( FILE * stream )

返回类型 :lonf int(返回的是偏移量)

     2. 参数 stream

stream 是流的指针(适用于文件

参数类型是 FILE *

     3. 引用头文件

<stdio.h>


举例

#include<stdio.h>
int main()
{char ch[] = "ss";FILE* pa = fopen("data.txt", "r");fseek(pa, -1, SEEK_END);int tmp = ftell(pa);printf("%d ", tmp);fclose(pa);pa = NULL;return 0;
}

运行结果:

画图分析:

3. rewind

让文件指针的位置回到文件的起始位置

跳转网站

rewind - C++ Reference

注意事项:

  1. void rewind ( FILE * stream )

返回类型 :void

     2. 参数 stream

stream 是流的指针(适用于文件

参数类型是 FILE *

   3. 引用头文件

<stdio.h>


举例

#include<stdio.h>
int main()
{char ch[] = "ss";FILE* pa = fopen("data.txt", "r");fseek(pa, -1, SEEK_END);rewind(pa);printf("%c ", getc(pa));fclose(pa);pa = NULL;return 0;
}

运行结果:

八. 文件读取结束的判定

文件读取结束有两者情况:

  • 正常的读到文件末尾而结束
  • 因为发生读取错误导致文件读取结束

判定导致文件读取结束原因的函数

1 . feof

当文件读取结束的时候,判断是读取结束的原因是否是:遇到文件尾结束

跳转网站

feof - C++ Reference

注意事项:

  1. int feof ( FILE * stream )

返回类型 :int

     2. 参数 stream

stream 是流的指针(适用于文件

参数类型是 FILE *

    3. 引用头文件

 <stdio.h>

2 . ferror

当文件读取结束的时候,判断是读取结束的原因是否是:遇到文件尾结束

跳转网站

ferror - C++ Reference

注意事项:

  1. int ferror ( FILE * stream )

返回类型 :int

     2. 参数 stream

stream 是流的指针(适用于文件

参数类型是 FILE *

    3. 引用头文件

<stdio.h>


feof 和 ferror 举例

#include<stdio.h>
int main()
{char ch[] = "ss";FILE* pa = fopen("data.txt", "r");while (getc(pa) != EOF){;}if (ferror(pa)){printf("文件读取过程发生失败\n");}else if (feof(pa)){printf("文件正常遇到结尾\n");}fclose(pa);pa = NULL;return 0;
}

运行结果:

九. 文件缓冲区

缓冲文件系统 :

是指系统自动地在内存中为 程序中每一个正在使用的文件开辟一块“文件缓冲区”。从内存向磁盘输出数据会先送到内存中的缓冲区,装满缓冲区后才⼀起送到磁盘上。缓冲区的大小根据C编译系统决定的。

所以我们往文件里面写入数据时,立刻打开文件,不能确保一定能找当刚才的数据(如果想要获得数据,可以先刷新缓冲区)

相关文章:

文件操作(下)

标题的顺序是接着之前写的&#xff0c;希望这篇博客对你有帮助 七. 随机读写函数 实际上&#xff0c;无论是读还是写&#xff0c;在一次调用顺序读写函数&#xff0c;文件指针会移到已经读过或者写过的下一个位置&#xff0c;从那个位置开始下一次读和写&#xff08;在文件没有…...

面试必问-vue3中ref与这个reactive的区别

ref和reactive是Vue 3中两种不同的响应式数据处理方式。 ref&#xff1a;ref函数可以将普通的Javascript值转换为一个响应式引用。它返回一个包含.value属性的对象&#xff0c;可以通过读取或修改.value来操作引用的值。当引用的值发生变化时&#xff0c;Vue会自动追踪依赖并更…...

网络(九)三层路由、DHCP以及VRRP协议介绍

目录 一、三层路由 1. 定义 2. 交换原理 3. 操作演示 3.1 图示 3.2 LSW1新建vlan10、20、30&#xff0c;分别对应123接口均为access类型&#xff0c;接口4为trunkl类型&#xff0c;允许所有vlan通过 3.3 LSW2新建vlan10、20、30&#xff0c;配置接口1为trunk类型&…...

深度学习 Day19——P8YOLOv5-C3模块实现

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 文章目录 前言1 我的环境2 代码实现与执行结果2.1 前期准备2.1.1 引入库2.1.2 设置GPU&#xff08;如果设备上支持GPU就使用GPU,否则使用C…...

轻量封装WebGPU渲染系统示例<51>- 视差贴图(Parallax Map)(源码)

视差纹理是一种片段着色阶段增强材质表面凹凸细节的技术。 这里在WebGPU的实时渲染材质管线中实现了视差贴图计算&#xff0c;以便增强相关的纹理细节表现力。 当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/material/src/voxgpu/sample/Para…...

YOLOv8改进 | 2023主干篇 | 华为最新VanillaNet主干替换Backbone实现大幅度长点

一、本文介绍 本文给大家来的改进机制是华为最新VanillaNet网络&#xff0c;其是今年最新推出的主干网络&#xff0c;VanillaNet是一种注重极简主义和效率的神经网络架构。它的设计简单&#xff0c;层数较少&#xff0c;避免了像深度架构和自注意力这样的复杂操作(需要注意的是…...

Leetcode 376 摆动序列

题意理解&#xff1a; 如果连续数字之间的差严格地在正数和负数之间交替&#xff0c;则数字序列称为 摆动序列 如果是摆动序列&#xff0c;前后差值呈正负交替出现 为保证摆动序列尽可能的长&#xff0c;我们可以尽可能的保留峰值&#xff0c;&#xff0c;删除上下坡的中间值&…...

51单片机控制1602LCD显示屏输出自定义字符二

51单片机控制1602LCD显示屏输出自定义字符二 1.概述 1602LCD除了内置的字符外还提供自定义字符功能&#xff0c;当内置的字符中没有我们想要输出的字符时&#xff0c;我们就可以自己创造字符让他显示&#xff0c;下面介绍1602如何创建自定义字符。 2.1602LCD创建字符原理 自…...

HarmonyOS自学-Day2(@Builder装饰器)

目录 文章声明⭐⭐⭐让我们开始今天的学习吧&#xff01;Builder装饰器&#xff1a;自定义构建函数Builder介绍Builder使用说明自定义组件中创建自定义构建函数全局自定义构建函数 Builder参数传递规则按引用传递参数按值传递参数 文章声明⭐⭐⭐ 该文章为我&#xff08;有编程…...

bottom-up-attention-vqa-master 成功复现!!!

代码地址 1、create_dictionary.py 建立词典和使用预训练的glove向量 &#xff08;1&#xff09;create_dictionary() 遍历每个question文件取出所关注的question部分&#xff0c;qs 遍历qs&#xff0c;对每个问题的文本内容进行分词&#xff0c;并将分词结果添加到字典中&…...

BigDecimal中divide方法详解

BigDecimal中divide方法详解 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;让我们一起深入探讨Java中BigDecimal的divide方法&#xff0c;揭开这个…...

视频推拉流EasyDSS互联网直播/点播平台构建户外无人机航拍直播解决方案

一、背景分析 近几年&#xff0c;国内无人机市场随着航拍等业务走进大众&#xff0c;出现爆发式增长。无人机除了在民用方面的应用越来越多&#xff0c;在其他领域也已经开始广泛应用&#xff0c;比如公共安全、应急搜救、农林、环保、交通 、通信、气象、影视航拍等。无人机使…...

行为型设计模式-策略模式(Strategy Pattern)

策略模式 策略模式&#xff1a;百度百科中引述为&#xff1a;指对象有某个行为&#xff0c;但是在不同的场景中&#xff0c;该行为有不同的实现算法。 策略模式是对算法的包装&#xff0c;是把使用算法的责任和算法本身分割开来&#xff0c;委派给不同的对象管理。策略模式通…...

html中RGB和RGBA颜色表示法

文章目录 RGB什么是RGBRGB颜色模式的取值范围RGB常用颜色对照表 RGBA什么是RGBARGBA颜色模式的取值范围 总结 RGB 什么是RGB RGB是一种颜色空间&#xff0c;其中R代表红色&#xff08;Red&#xff09;、G代表绿色&#xff08;Green&#xff09;、B代表蓝色&#xff08;Blue&a…...

【BEV感知】BEVFormer 融合多视角相机空间特征和时序特征的端到端框架 ECCV 2022

前言 本文分享BEV感知方案中,具有代表性的方法:BEVFormer。 基本思想:使用可学习的查询Queries表示BEV特征,查找图像中的空间特征和先前BEV地图中的时间特征。 它基于Deformable Attention实现了一种融合多视角相机空间特征和时序特征的端到端框架,适用于多种自动驾驶感…...

git拉取hugging face代码失败:443

报错信息&#xff1a;fatal: unable to access http://huggingface.co/THUDM/chatglm2-6b/: OpenSSL SSL_connect: Connection reset by peer in connection to huggingface.co:443 解决方法&#xff1a;&#xff08;127.0.0.1:7890配置为自己的实际代理ip及端口&#xff09; …...

【赠书活动】OpenCV4工业缺陷检测的六种方法

文章目录 前言机器视觉缺陷检测工业上常见缺陷检测方法延伸阅读推荐语 赠书活动 前言 随着工业制造的发展&#xff0c;对产品质量的要求越来越高。工业缺陷检测是确保产品质量的重要环节&#xff0c;而计算机视觉技术的应用能够有效提升工业缺陷检测的效率和精度。 OpenCV是一…...

设计模式之创建型设计模式(一):单例模式 原型模式

单例模式 Singleton 1、什么是单例模式 在软件设计中&#xff0c;单例模式是一种创建型设计模式&#xff0c;其主要目的是确保一个类只有一个实例&#xff0c;并提供一个全局访问点。 这意味着无论何时需要该类的实例&#xff0c;都可以获得相同的实例&#xff0c;而不会创建…...

Amazon CodeWhisperer 在 vscode 的应用

文章作者:旧花阴 CodeWhisperer 是一款可以帮助程序员更快、更安全地编写代码的工具&#xff0c;可以在他们的开发环境中实时提供代码建议和推荐。亚马逊云科技发布的这款代码生成工具 CodeWhisperer 最大的优势就是对于个人用户免费。以在 vscode 为例&#xff0c;演示安装过程…...

【Java】基于fabric8io库操作k8s集群实战(pod、deployment、service、volume)

目录 前言一、基于fabric8io操作pod1.1 yaml创建pod1.2 fabric8io创建pod案例 二、基于fabric8io创建Service&#xff08;含Deployment&#xff09;2.1 yaml创建Service和Deployment2.2 fabric8io创建service案例 三、基于fabric8io操作Volume3.1 yaml配置挂载存储卷3.2 基于fa…...

基于LSTM与SmolVLA的时序多模态数据分析

基于LSTM与SmolVLA的时序多模态数据分析 想象一下&#xff0c;你面前有一段监控视频&#xff0c;画面里有人正在行走、停留、再行走。如果只看其中一帧&#xff0c;你只能知道“这里有个人”&#xff1b;但如果把连续几帧连起来看&#xff0c;你就能判断出“这个人正在从A点走…...

FPGA新手必看:Vivado 2023.1里用DDS IP核生成1MHz正弦波,附完整仿真代码

FPGA实战&#xff1a;从零构建1MHz正弦波生成器的Vivado全流程解析 刚拿到FPGA开发板时&#xff0c;我最想实现的第一个项目就是信号发生器。看着示波器上跳动的波形从自己编写的代码中产生&#xff0c;这种成就感无可替代。本文将带你用Xilinx Vivado 2023.1中的DDS IP核&…...

PHP-JWT:PHP 中 JSON Web Tokens 的完整实现指南

PHP-JWT&#xff1a;PHP 中 JSON Web Tokens 的完整实现指南 【免费下载链接】php-jwt 项目地址: https://gitcode.com/gh_mirrors/ph/php-jwt Firebase PHP-JWT 是一个遵循 RFC 7519 标准的 PHP JSON Web Tokens 实现库&#xff0c;提供安全、高效的 JWT 编码和解码功…...

DSQC346G 3HAB8101-8 机器人伺服驱动单元

DSQC346G 3HAB8101‑8 机器人伺服驱动单元介绍DSQC346G&#xff08;3HAB8101‑8&#xff09;是一款专用于工业机器人伺服系统的驱动单元&#xff0c;用于控制伺服电机的运动与输出&#xff0c;实现机器人关节或轴的精确位置、速度和力矩控制&#xff0c;是机器人驱动链中的核心…...

Python从入门到精通(第14章):迭代器与生成器

开头导语 这是本系列第14章。前面你已经用过很多次迭代器和生成器——for x in data 的背后是什么,map 返回的对象为什么不能下标访问,range 为什么不会占很多内存——这些问题的答案都在本章。通过亲手实现一个迭代器类,你会对 Python 迭代协议有清晰的认识,遇到相关错误…...

4个步骤实现跨设备数据同步:开源工具Kazumi的WebDAV集成方案

4个步骤实现跨设备数据同步&#xff1a;开源工具Kazumi的WebDAV集成方案 【免费下载链接】Kazumi 基于自定义规则的番剧采集APP&#xff0c;支持流媒体在线观看&#xff0c;支持弹幕&#xff0c;支持实时超分辨率。 项目地址: https://gitcode.com/gh_mirrors/ka/Kazumi …...

Landsat8温度反演结果不准?可能是这5个参数没搞对(ENVI实战经验分享)

Landsat8温度反演精度提升&#xff1a;5个关键参数优化与ENVI实战解析 当你在深夜盯着屏幕上那些明显偏离预期的温度反演结果时&#xff0c;是否曾怀疑过ENVI软件出了问题&#xff1f;事实上&#xff0c;90%的温度反演误差都源于几个关键参数的设置不当。作为一位经历过数十个遥…...

Mid-70激光雷达与相机无目标标定:从环境搭建到实战避坑

1. 为什么选择Ubuntu 16.04进行Mid-70标定 最近在给Livox Mid-70激光雷达做相机标定时&#xff0c;我踩了个大坑——在Ubuntu 22.04上折腾了整整两天都没搞定环境配置。后来才发现问题出在版本兼容性上&#xff1a;ROS Kinetic、Ceres 1.14.x和Eigen 3.2.92这几个关键组件在新系…...

图片去水印 API 接口实战:网站如何实现自动去水印(Python / PHP / C#)

在做网站或后台系统时&#xff0c;一个很常见但容易被忽视的问题是&#xff1a; &#x1f449; 用户上传的图片自带水印 &#x1f449; 平台展示希望统一成干净版本 &#x1f449; 还要支持批量、自动化处理 &#x1f449; 最好能无缝接入现有系统 如果你正在找&#xff1a; …...

AI驱动的科研绘图革命:DeTikZify如何终结图表代码的手动时代

AI驱动的科研绘图革命&#xff1a;DeTikZify如何终结图表代码的手动时代 【免费下载链接】DeTikZify Synthesizing Graphics Programs for Scientific Figures and Sketches with TikZ 项目地址: https://gitcode.com/gh_mirrors/de/DeTikZify 当deadline遇上绘图难题&a…...