C语言操作文件 - 随心所欲读取秘籍

C - 随机读取

  • 定位文件指针的函数
    fseek
  • 计算文件指针的偏移量
    ftell
  • 重置文件的位置
    rewind

0.原来的文件的读取

目前文件中的内容:
在这里插入图片描述
实例代码:
在这里插入图片描述

原来的文件读取只能按照顺序依次读取文件中的字符,那我能不能直接跳过‘a’直接读取‘b’呢?

1. 文件指针的偏移量

目前文件中的内容:
在这里插入图片描述
偏移量的解读:
在这里插入图片描述

2.定位文件指针的函数fseek

函数fseek:
在这里插入图片描述
实例代码:

在这里插入图片描述
结果:
在这里插入图片描述
偏移量例题:
默认文件的内容为:abcdef
FILE* pf 是该文件指针
1.

fseek(pf, 1, SEEK_SET)
fgetc(pf)

偏移量是2

fgetc(pf);
fseek(pf,3,SEEK_CUR);
fgetc(pf);

偏移量是5
3.

fgetc(pf);
fseek(pf,3,SEEK_SET);
fgetc(pf);

偏移量是2

3.计算文件指针的偏移量ftell

功能简介:
在这里插入图片描述
实例代码:

#include<stdio.h>
//C语言文件操作 - 随机读写
int main()
{
	FILE* pf = fopen("test.txt", "r");
	int a = 0;
	if (pf != NULL)
	{
		//操作文件
		fgetc(pf);
		
		if (!fseek(pf, 3, SEEK_CUR))
		{
			a = fgetc(pf); printf("%c\n", a);
			int b = ftell(pf);
		    printf("偏移量为>:%d\n", b);
		}
		//关闭文件
		fclose(pf);
	}
	//消除野指针
	pf = NULL;
	return 0;
}

结果:
在这里插入图片描述
大家可以自己下去试试!!!

4.重置文件的位置rewind

功能简介:
在这里插入图片描述

实例代码:

#include<stdio.h>
//C语言文件操作 - 随机读写
int main()
{
	FILE* pf = fopen("test.txt", "r");
	int a = 0;
	if (pf != NULL)
	{
		//操作文件
		fgetc(pf);
		
		if (!fseek(pf, 3, SEEK_CUR))
		{
			a = fgetc(pf); printf("a>:%c\n", a);
			int b = ftell(pf);
			printf("偏移量为>:%d\n", b);
			rewind(pf);
			a = fgetc(pf); printf("a>:%c\n", a);
		}
		
		//关闭文件
		fclose(pf);
	}
	//消除野指针
	pf = NULL;
	return 0;
}

在这里插入图片描述

rewind之后,文件指针的位置回到文件的起始位置,fgetc(pf)从文件中读取字符’a’!

结束!(今天太累不知道说些什么啦👀)!!!

  • 14
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值