【c语言】文件的光标操作

news2024/12/26 2:10:06

创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
🔥c语言系列专栏:c语言之路重点知识整合 🔥
给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ

本文基于——文件的基本概念:文件的基本概念、操作


目录

  • 一、ftell函数
  • 二、rewind函数
  • 三、fgetpos函数
  • 四、fsetpos函数
  • 五、fseek重定位
  • 总结

先创建一个文件,打开、操作文件的基本格式:

#include <stdio.h>
int main()
{
	FILE* p = fopen("E:\\TianXiFile\\letter.txt", "r+t");
	if (p)
	{
		printf("文件打开成功!\n");
		//...操作
		fclose(p);
		p = NULL;
	}
	else
	{
		printf("文件打开失败!\n");
	}
	system("pause");
	return 0;
}

一、ftell函数

ftell函数用于获取当前文件指针在文件中的位置(以字节为单位)

可以用于对文件进行重新定位或判断文件大小等操作

在这里插入图片描述

使用:

		//获得光标位置
		printf("光标位置:%ld\n", ftell(p));

在这里插入图片描述

由此看出:文件光标默认在0处

如何移动文件光标呢?

不难想到 光标会在文件读取时随着读取的位置移动

读取数据:

		//获得光标位置
		printf("光标位置:%ld\n", ftell(p));
		//读取数据
		printf("%c\n", fgetc(p));
		printf("光标位置:%ld\n", ftell(p));

		printf("%c\n", fgetc(p));
		printf("%c\n", fgetc(p));
		printf("%c\n", fgetc(p));
		printf("光标位置:%ld\n", ftell(p));

在这里插入图片描述

光标随着数据的读取也在移动,读取一个T光标位置移动到了1 再读取三个数据,光标位置移动到了4

二、rewind函数

rewind函数可以将文件光标重新定位到文件的开头位置,没有返回值

在这里插入图片描述

在这里插入图片描述

rewind函数会将文件光标重置到文件的开头位置
因此之前读取过的数据就要重新读取
在文件读取时,如果希望回到文件开头重新读取一遍文本内容,可以使用 rewind函数将文件光标重置到开头,再进行读取操作

三、fgetpos函数

在这里插入图片描述
在调用fgetpos函数时,她所需要传入的参数有一个fpos_t类型,这是什么类型呢?

在这里插入图片描述

定义一个fpos_t类型的变量查看一下: 是一个对long long重命名的类型 (重命名typedef知识点:【c语言】typedef详解)

在这里插入图片描述
fpos_t 是一种文件位置类型,可以存储与相应操作系统兼容的任意大小值

使用fgetpos函数获取光标的位置:

在这里插入图片描述

四、fsetpos函数

fsetpos函数用于将文件光标设置为文件流中某个位置

与fgetpos函数类似,fsetpos函数使用了一个fpos_t类型的参数来表示在哪个位置设置文件光标。

在这里插入图片描述
比如:我要设置文件光标为5

在这里插入图片描述

定义一个同类型数据(代表光标位置): const fpos_t wz = 5;

	//设置光标位置
		
		const fpos_t wz = 5;
		fsetpos(p, &wz);
		printf("%c\n", fgetc(p));

在这里插入图片描述

五、fseek重定位

如果我们想对文件中的内容进行修改,直接fputc不能成功修改,就需要进行重定位操作

文件内容没有被修改成功:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

	//修改文件内容
		
	//重定位:
		fseek(p, 0, SEEK_CUR);
		fputc('7', p);

重定位到当前位置成功修改:

在这里插入图片描述
使用偏移:

定位到结束位置,偏移-2:向左偏移两位,修改 i

在这里插入图片描述

当使用 SEEK_SET 进行偏移时,将起始位置从文件开头算起
当使用 SEEK_CUR 进行偏移时,则是相对于当前位置的偏移
而使用 SEEK_END 进行偏移时,则会以文件末尾为起点

总结

使用下列文件操作函数,可以在程序中对文件进行读写操作

  • ftell() 函数用于获取当前文件光标的位置

  • rewind() 函数用于将文件指针重置到文件开头

  • fgetpos() 和 fsetpos() 函数用于获取和设置文件当前指针位置,使用了fpos_t类型

  • fseek() 函数可将文件指针从当前位置向前或向后移动一定数量的字节,进行重定位

文件更多知识:

【c语言】文件的基本概念、操作

【c语言】文本文件的读写操作


在这里插入图片描述

大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●)

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

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

相关文章

Java --- 云尚办公角色管理模块实现

目录 一、项目介绍 1.1、项目简介 1.2、技术框架 1.3、项目构建 1.4、配置依赖 二、mybatis-plus测试使用 三、角色管理 3.1、完善统一返回信息 3.2、整合knife4j 3.3、分页查询功能 3.4、添加、修改、删除功能 3.5、完善时间格式 3.6、异常统一处理 四、前端知识 4.1…

LeetCode662.设计循环队列||4种方法实现

目录 题目 思路1(链表) 代码 思路2(数组) 代码 题目 题目要求的队列需要实现的功能有 ①Creat---设置队列长度 ②Front---获取队列头 ③Rear---获取队列尾 ④en----插入元素 ⑤de---删除元素 ⑥empty---判空 ⑦full---判满 思路1(链表) &#x1f50d;普通队列长度没有限制&…

MySQL高级——第16章_多版本并发控制

第16章_多版本并发控制 1. 什么是MVCC MVCC &#xff08;Multiversion Concurrency Control&#xff09;&#xff0c;多版本并发控制。顾名思义&#xff0c;MVCC 是通过数据行的多个版本管理来实现数据库的 并发控制 。这项技术使得在InnoDB的事务隔离级别下执行 一致性读 操…

ARM学习笔记_1 介绍,Keil环境搭建

从零开始学ARM 学习自b站一口linux老师的课程。 文章目录 从零开始学ARM介绍为什么要学汇编&#xff1f;ARM是什么&#xff1f;SOC计算机历史冯诺依曼结构介绍哈佛架构介绍混合架构介绍CPU运行原理 环境搭建 介绍 学习ARM需要学计算机原理&#xff0c;汇编&#xff0c;C语言&…

强大,Midjourney Imagine API接口,AI画画的福音!

前几天跟大家分享过一篇 ”让chatGPT教你AI绘画|如何将chatGPT与Midjourney结合使用&#xff1f;“&#xff0c;但是由于许多小伙伴们使用Midjourney还有许多困难&#xff0c;又要上网&#xff0c;还要注册Discord&#xff0c;MJ的使用成本很高&#xff0c;让大家望而却步&…

【计算机视觉 | 目标检测】目标检测中的评价指标 mAP 理解及计算(含示例)

文章目录 一、目标检测的评价指标1.1 Precision1.2 Recall1.3 Average Precision&#xff08;AP&#xff09;1.4 mean Average Precision&#xff08;mAP&#xff09;1.5 Intersection over Union&#xff08;IoU&#xff09;1.6 F1-score 二、基础知识2.1 Precision2.2 Recall…

5.20下周黄金行情走势分析及开盘独家交易策略

近期有哪些消息面影响黄金走势&#xff1f;下周黄金多空该如何研判&#xff1f; ​黄金消息面解析&#xff1a;周五(5月19日)&#xff0c;现货黄金价格下跌又反弹&#xff0c;现货黄金持续走高美联储主席鲍威尔&#xff1a;那些积极的供应冲击不太可能重复出现&#xff0c;美联…

初阶数据结构之单链表的实现(四)

文章目录 链表的概念及结构一、链表的逻辑结构是什么样的&#xff1f;二、链表的初始化2.1链表初始化的示意2.2链表初始化代码实现 三、链表的各类接口函数定义四、链表的各类接口函数的代码实现4.1链表的打印代码实现4.1.1打印代码的实现 4.2链表的尾插代码实现4.2.1尾插代码实…

Mongodb 6.0 变化的配置参数与连接的方式变化

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群&#xff08;共…

【故障排查】【伪处理】Jenkins在iframe窗口无法添加secret text凭证

问题描述 环境的ingress是&#xff0c;有个 svc 暴露 30080 -> 80 大致流程&#xff1a; svc&#xff08;ingress-nginx&#xff09; 30080端口 -> pod (nginx-ingress-controller ) 80端口 -> ingress -> svc -> pod &#xff08;Jenkins 8080端口&#xff0…

基于粒子群优化算法的路径问题优化研究及其在Python中的实现

基于粒子群优化算法的路径问题优化研究及其在Python中的实现 文章目录 基于粒子群优化算法的路径问题优化研究及其在Python中的实现一、简介二、引言1、粒子群优化算法简介2、PSO算法与鸟群的类比 三、PSO算法数学原理1、粒子的位置和速度2、适应度函数3、粒子的个体最优和全局…

基于html+css的图展示80

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

从零开始搭建属于自己的hexo博客

前提要素&#xff1a;一个提供博客运行的服务器或者XX云。 先展示一下搭建好的样子&#xff0c;给大家一点动力&#xff1a; 整个搭建过程大概需要30分钟不到&#xff0c;请各位控制自己的时间~ 好了&#xff0c;废话不多说我们开始&#xff01; 1、首先登录我们准备好的服…

redis高级篇二(分片集群)

一)进行测试Sentinel池: ​ Controller public class RestController {RequestMapping("/Java100")ResponseBodypublic String start(){//1.配置信息HashSet<String> setnew HashSet<>();// 连接信息 ip:port// set.add("127.0.0.1:27001");se…

[抓包] 微信小程序(PC版)如何抓包

本文抓包环境 Win10&#xff0c;微信(PC版本) v3.9.2.20&#xff0c;Burp Suite v1.7.32&#xff0c;Proxifier v3.42 不使用安卓模拟器 一、下载安装好Burp Suite&#xff0c;Proxifier 链接: https://pan.baidu.com/s/177BIEgCmZG9MfqQ4D0PTsg 提取码: 3hex 二、开始抓包 …

【ASP.NET Core笔记】 使用razor pages构建网站

使用ASP.NET Core Razor Pages 构建网站 sqlite 北风数据库 1. Northwind.Common.DataContext.Sqlite 是Sqlite的数据库上下文&#xff0c;有三个类&#xff1a;ConsoleLogger.csNorthwindContext.csNorthwindContextExtensions.cs 1.1 NorthwindContext 继承自 Microsoft.Enti…

计算机图形学-GAMES101-10

一、纹理 原模型网格->逐面Shading->逐像素Phong Shading->纹理贴图->换个纹理再贴图->环境光照。 &#xff08;1&#xff09;环境贴图 纹理就是一张图&#xff0c;纹理是GPU里的一块内存&#xff0c;可以进行点查询、范围查询、滤波。  环境光贴图、环境光映…

The authenticity of host ‘gitee.com (212.64.63.190)‘ can‘t be established.

在将本地仓库的代码推送到远程仓库时&#xff0c;出现下面报错。 $ git push -u origin master The authenticity of host gitee.com (212.64.63.190) cant be established. ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQpKkGYoFgbVr17bmjey0Wc. Are you sure you w…

Kali-linux分析密码

在实现密码破解之前&#xff0c;介绍一下如何分析密码。分析密码的目的是&#xff0c;通过从目标系统、组织中收集信息来获得一个较小的密码字典。本节将介绍使用Ettercap工具或MSFCONSOLE来分析密码。 8.2.1 Ettercap工具 Ettercap是Linux下一个强大的欺骗工具&#xff0c;也…

Mysql中常用到的查询关键字

文章目录 1、join2、like 模糊查询3、or4、distinct5、in 包含6、group by 分组7、order by8、limit 1、join MySQL 的连接主要分为内连接和外连接。 什么是内连接&#xff1a; 取得两张表中满足存在连接匹配关系的记录。 什么是外连接&#xff1a; 不只取得两张表中满足存在…