文件操作3

随机读写数据文件

一、随机读写原理

在我们写数据时,有一个光标不断的在随着新写入的数据往后移动;

而读数据时,也有一个看不见光标,随着已经读完的数据,往后移动

这里的文件读写位置标记——可以想象成图形界面里的光标,读写时自动移动

也类似于看电影,听音乐时的进度条

而随机读写就是随机跳跃移动光标,或是进度滚动条

二、随机读写函数fseek说明,fseek的简单应用

//把D盘目录下的1.txt文件(D:\\1.txt)的内容(前提有该文件且有数据),读2次并输出到屏幕
    

可以看到上图第一遍fread的返回值len1为15,不是100,因为fread的返回值是实际读取的数据数量

而第二个为0,并没有读进来,这是因为——

例如读下图中的一串数据,第一遍顺序读到末尾,光标显示在末尾

读完了第二次重新从光标的这个位置再去读,

此时光标已经在数据的最末尾了,那么再去读已经没有数据了

所以在第二次读len2之前,我们要将文件标记位置,重新移动到文件开头——fseek

fseek有3个参数

1.文件位置指针fr

2.字节距离这个参照点的位置

3.初始化的位置,也叫参照点,参照物

它提供了3个参照点,(参照点在哪,光标在哪)

第一个是文件标记位置,光标的当前位置;第二个是文件尾;第三个是文件头

之后通过第二个参数将光标往左或是往右偏移多少个字节

现在光标就能到达你想达到的位置,即随机函数

例如要到达文件开头,那就是偏移量为0,以文件开头为参照点

fseek(fr,0,SEEK_SET)

要是以第一遍读完后的文件尾,为当前位置,作参照点,

那么往左移为负数,往右移为正数

从尾回到头就是-len1

三、读取指定学生信息

//1打开2读3输出4跳过

//再磁盘文件上存有10个学生的数据,将第1,3,5,7,9个学生数据输入计算机,并在屏幕上显示出来//学生结构体
typedef struct Student
{char name[20];//姓名int num;//学号int age;//年龄char addr[100];//地址
} Student;//1打开2读3输出4跳过
int main()
{FILE* fr = fopen("1.txt", "rb");if (fr == NULL){printf("文件打开失败\n");return -1;}Student stu;//读到stu里面int len;for (int i = 0; i < 3; i++)//读3个学生的信息{len=fread(&stu, sizeof(Student), 1, fr);if (len < 1)//要信息了求读一次却没有读到1,说明文件已经没有{printf("文件结束了\n");break;}printf("%s %d %d %s\n", stu.name, stu.num, stu.age, stu.addr);//跳过偶数位置fseek(fr,sizeof(Student), SEEK_CUR);//跳过一个学生大小的字节数}fclose(fr);return 0;
}

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

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

相关文章

算法分析与设计复试总结(二)

以下是一些常见的问题类型&#xff1a; 基础算法概念&#xff1a; 请解释什么是算法&#xff0c;以及算法的重要性。 算法是一系列解决问题的清晰指令&#xff0c;算法代表着用系统的方法描述解决问题的策略机制。也就是说&#xff0c;能够对一定规范的输入&#xff0c;在有限…

QB PHP 多语言配置

1&#xff1a; 下载QBfast .exe 的文件 2&#xff1a; 安装的时候 &#xff0c;一定点击 仅为我 安装 而不是 所有人 3&#xff1a; 如果提示 更新就 更新 &#xff0c; 安装如2 4&#xff1a; 如果遇到 新增 或者编辑已经 配置的项目时 不起作用 &#xff1a; 右…

05:HAL-----看门狗WDT

目录 一:看门狗 1:WDT 2:独立看门狗 (IWDG) A:IWDG框图 B:IWDG_KR键寄存器 C:IWDG超时时间 D:HAl库的配置 3:窗口看门狗 (WWDG) A:WWDG框图 B:WWDG工作特性 C:WWDG超时时间 D:HAL库配置 4:独立看门狗和窗口看门狗的区别 5:数据手册 二:案例 A:独立看门狗 B:窗…

LEETCODE-DAY29

title: LEETCODE-DAY29 date: 2024-03-20 15:22:38 tags: 今日内容&#xff1a;491.递增子序列、46.全排列、47.全排列 II T1 class Solution:def backtracking(self,nums,index,path,res):if indexlen(nums):res.append(path.copy())returnfor i in range(index,len(nums))…

springboot项目学习-瑞吉外卖(4)

1.任务 这一节主要的任务是解决文件的上传和下载功能 2.文件上传 概念&#xff1a;将本地的图片上传到浏览器上面 点击文件上传&#xff0c;前端就会发送如上的请求&#xff0c;服务端应该根据URL和请求方法来处理请求 CommonController类&#xff1a; RestController Slf4j …

【第二部分--Python之基础】

一、初识 开发语言&#xff1a; 高级语言&#xff1a;Python Java PHP C# Go Ruby C ... > 字节码 低级语言&#xff1a;C 汇编 > 机器码 …

6、jenkins项目构建类型1-项目类型介绍

文章目录 一、自由风格项目二、Maven项目构建三、Pipeline流水线项目构建&#xff08;☆☆☆&#xff09; Jenkins中自动构建项目的类型有很多&#xff0c;常用的有以下三种&#xff1a; 自由风格软件项目&#xff08;FreeStyle Project&#xff09;Maven项目&#xff08;Mave…

初始Redis关联和非关联

基础篇Redis 3.初始Redis 3.1.2.关联和非关联 传统数据库的表与表之间往往存在关联&#xff0c;例如外键&#xff1a; 而非关系型数据库不存在关联关系&#xff0c;要维护关系要么靠代码中的业务逻辑&#xff0c;要么靠数据之间的耦合&#xff1a; {id: 1,name: "张三…

Maya FBX导出导入

问题描述&#xff1a; Maya 导出导入 FBX&#xff0c;设置 FBX 的 导入和导出设置 解决方案&#xff1a; 获取FBX设置 def getFBXSettings():""" get current user settings for FBX export and store them """mel.eval(FBXPushSettings;)de…

指针知识大礼包,让你的编程之路更顺畅(一)

1. 内存和地址 2. 指针变量和地址 3. 指针变量类型的意义 4. const修饰指针 5. 指针运算 6. 野指针 7. assert断⾔ 8. 指针的使⽤和传址调⽤ 正文开始 1. 内存和地址 1.1 内存 在讲内存和地址之前&#xff0c;我们想有个⽣活中的案例&#xff1a; 假设有⼀栋宿舍楼&a…

自锁电路设计

自锁电路设计 Hi,uu们,是不是经常要用到自锁电路,通常不是使用555芯片就是用比较器来做自锁,今天我们来简单看下自锁电路的设计.图1采用了比较器构建了一个自锁电路,采用低电平复位&#xff0c;当需要复位的时候志需要将反向端的二极管拉低一下即可&#xff0c;免去 三极管控制…

glsl改变纹理坐标来放大图像

使用glsl中的顶点着色器来改变坐标位置 // 顶点着色器 #version 330 core layout (location 0) in vec2 Position; // 位置坐标 layout (location 1) in vec2 TexCoord; // 原始纹理坐标 out vec2 FragTexCoord; // 输出给片段着色器的纹理坐标 void main() {gl_Position …

springboot 大文件分片上传

springboot 大文件分片上传 constantentityvocontrollerutils大文件分片上传是一种将大文件分割成多个小文件片段,然后分别上传这些小文件片段的方法。这种方法的好处包括: 减少重新上传开销:如果网络传输中断,只需重传未上传的部分,而不是整个文件。 提高灵活性:分片大小…

产品经理和市场经理的区别

1. 前言 行业权威人士强调,高达九成的产品在市场上未达预期目标,被视为失败。尽管你的产品未必在此范围内,我依然认为市场上存在大量构思粗糙、尚未成熟、使用不便且缺乏价值的产品。产品失败的原因多种多样,我将从不同角度深入分析。然而,我深信,根本问题在于公司对产品…

【Selenium】隐藏元素的定位和操作|隐藏与isDisplay方法

一、selenium 中隐藏元素如何定位&#xff1f; 如果单纯的定位的话&#xff0c;隐藏元素和普通不隐藏元素定位没啥区别&#xff0c;用正常定位方法就行了 但是吧~~~能定位到并不意味着能操作元素&#xff08;如click,clear,send_keys&#xff09; 二、隐藏元素 如下图有个输入框…

Alibaba spring cloud Dubbo使用(基于Zookeeper或者基于Nacos+泛化调用完整代码一键启动)

Quick Start Dubbo&#xff01;用更优雅的方式来实现RPC调用吧 - 掘金 dubbozookeeper demo 项目结构&#xff1a; RpcService 仅仅是提供服务的接口&#xff1a; public interface HelloService {String sayHello(String name); }DubboServer pom&#xff1a; <?xm…

EDR下的线程安全

文章目录 前记进程断链回调执行纤程内存属性修改early birdMapping后记reference 前记 触发EDR远程线程扫描关键api&#xff1a;createprocess、createremotethread、void&#xff08;指针&#xff09;、createthread 为了更加的opsec&#xff0c;尽量采取别的方式执行恶意代…

【Flutter学习笔记】10.3 组合实例:TurnBox

参考资料&#xff1a;《Flutter实战第二版》 10.3 组合实例&#xff1a;TurnBox 这里尝试实现一个更为复杂的例子&#xff0c;其能够旋转子组件。Flutter中的RotatedBox可以旋转子组件&#xff0c;但是它有两个缺点&#xff1a; 一是只能将其子节点以90度的倍数旋转二是当旋转…

2002-2023年各地级市环境规制强度数据(环保词频统计)

2002-2023年各地级市环境规制强度数据&#xff08;环保词频统计&#xff09; 1、时间&#xff1a;2002-2023年 2、来源&#xff1a;政府工作报告 3、指标&#xff1a; 行政区划代码、年份、城市、所属省份、文本总长度、仅中英文-文本总长度、文本总词频-全模式、文本总词频…

力扣刷题之22.括号生成

仅做学习笔记之用。 题目&#xff1a; 数字 n 代表生成括号的对数&#xff0c;请你设计一个函数&#xff0c;用于能够生成所有可能的并且 有效的 括号组合。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;["((()))","(()())","(())(…