文件操作中的随机读写

文件的随机读写

介绍完文件的顺序读写,它是按照规定的顺序一个一个往下读的,之前读的数据无法再次读取,而有些时候,我们又需要原来的数据完成一些事情,需要返回去读取原来的数据,这时候就需要文件的随机读写

fseek函数

fseek函数可以根据文件指针的位置和偏移量来定位文件指针,就是移动指针,将指针移动到你想要读取的数据的位置。

语法格式:int fseek(FILE*stream,long offset,int origin)

  • 参数1是文件指针,指向被操作的文件
  • 参数2是偏移量,表示对文件指针的移动,正数表示正向移动,负数表示反向移动
  • 参数3是指定文件从哪里开始偏移,主要有三个取值:SEEK_CUR(文件开头,取值为0),SEEK_CUR(当前位置,取值为1),SEEK_END(文件结尾,取值为2)

 具体实例

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	FILE* pa = fopen("佳乐.txt", "w");//以写的形式打开文件,如果文件不存在,就创造一个文件
	if (pa == NULL)
	{
		perror("fopen");//显示错误信息
			return 1;

	}
//使用
	fputs("hauciya", pa);
//使用完需要关闭文件,同时置空指针
	fclose(pa);
	pa = NULL;
	FILE* PA = fopen("佳乐.txt", "r");//在此打开文件,打开方式为“r”,代表只读,文件在第一次
//打开时已经被创建好了,用一个新的FILE*类型的指针接收
	if (PA == NULL)
	{
		perror("fopen");
		return 2;
	}
	fseek(PA, 4, 0);//移动文件指针,参数2为4,代表移动4,从h开始偏移,最后指向i
	int  a = 0;
	a = fgetc(PA);
	printf("%c\n", a);
	fclose(PA);
	PA = NULL;
	return 0;

}

一开始的PA文件指针指向的是h,经过fseek函数操作之后,PA指针向后偏移四个位置,到达i的位置,这时候对文件进行读取操作,就是从i开始读取 

 

 

运行结果

 

fseek函数大大提高了文件操作的灵活性,可以指哪打哪。但过于灵活也会带来弊端,多次执行fseek函数操作后,你会发现,你不知道文件指针指向哪里,下一次读取的数据从哪里开始,就会出现问题。

这时候可以使用ftell函数

ftell函数

ftell函数就是用来显示当前文件指针相对于起始位置的偏移量的,有了他,我们就可以在多次操作之后,仍清楚的知道此刻文件指针指向哪里。

语法格式:int ftell(FLIE*stream) 

  • 参数是文件指针
  • 返回类型是int类型,返回的值就是此刻文件指针相对于起始位置的偏移量

 rewind函数

rewind函数的功能相当于重启,它可以使文件指针回到初始位置,重置一切,我们有时候想回到过去,在c中,用rewind函数就可以完成。

语法格式: void rewind(FILE*stream);

  • 参数为文件指针
  • 无返回值,仅仅是重置一切
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值