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’!
结束!(今天太累不知道说些什么啦👀)!!!