目录
学习并使用fseek函数
函数的功能:
根据文件指针的位置和偏移量来定位文件指针
函数的参数:
FILE* stream:文件类型的指针
long int offset:偏移量
int origin:
SEEK_SET 表示从文件开始位置偏移 ;SEEK_CUR 表示从文件当前位置偏移 ;SEEK_END 表示从文件的结束位置偏移(注意:往前偏移时,偏移量为负数)
函数的返回值:
该函数偏移成功,就会返回0,否则返回非0值
代码演示:
#include<stdio.h>
int main()
{
// 以读的方式打开 "text.txt" 文件
FILE* pf = fopen("text.txt", "r");
// 判断是否成功打开
if (pf == NULL)
{
perror("fopen");
return -1;
}
// 将文件指针偏移到 'f' 字符处(当前文件存储了 "abcdefghi")
int ret = fseek(pf, 5, SEEK_SET);
// 判断是否偏移成功
if (ret != 0)
{
perror("fseek");
return -2;
}
// 打印 'f' 字符
printf("%c\n", fgetc(pf));
// 关闭文件
fclose(pf);
pf = NULL;
return 0;
}
代码验证:
学习并使用ftell函数
函数的功能:
计算文件指针当前位置到起始位置的偏移量
函数的参数:
FILE* stream:指向文件的指针
函数的返回值:
成功后返回偏移量,失败返回 -1L
代码演示:
#include<stdio.h>
int main()
{
// 以读的方式打开 "text.txt" 文件
FILE* pf = fopen("text.txt", "r");
// 判断是否成功打开
if (pf == NULL)
{
perror("fopen");
return -1;
}
// 当前的文件指针是指向文件起始位置的,所以偏移量为0
printf("%d\n", ftell(pf));
fgetc(pf);
// 在获取了一个字符后,文件指针会指向下一个位置,所以偏移量是1
printf("%d\n", ftell(pf));
return 0;
}
代码验证:
学习并使用rewind函数
函数的功能:
让文件指针的位置回到文件的起始位置
函数的参数:
FILE* stream:指向文件的指针
代码演示:
#include<stdio.h>
int main()
{
// 以读的方式打开 "text.txt" 文件
FILE* pf = fopen("text.txt", "r");
// 判断是否成功打开
if (pf == NULL)
{
perror("fopen");
return -1;
}
// 当前的文件指针是指向文件起始位置的,所以偏移量为0
printf("%d\n", ftell(pf));
fgetc(pf);
// 在获取了一个字符后,文件指针会指向下一个位置,所以偏移量是1
printf("%d\n", ftell(pf));
// 让文件指针的位置回到文件的起始位置 - 0
rewind(pf);
printf("%d\n", ftell(pf));
return 0;
}
代码验证: