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

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

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


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

#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语言】文本文件的读写操作


在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天喜Studio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值