1.fseek
用于设置文件中位置指针的偏移量。
1)头文件
#include
2)函数原型
int fseek(FILE *stream, long offset, int whence);
3)参数
stream:要操作的文件指针。
offset:表示以whence为起始点的偏移字节数。
whence:表示offset的起始点位置,可以是以下之一:
SEEK_SET:文件的开头。
SEEK_CUR:当前读写位置。
SEEK_END:文件的末尾。
4)返回值
返回0,表示设置成功;若返回非零值,表示出错。
5)示例:(打开ftest文件,将位置指针移动到文件末尾)
#include
int main()
{
FILE *fp = fopen("ftest", "r");
if (!fp) {
printf("error: ftest open\n");
return -1;
}
if (fseek(fp, 0, SEEK_END)) {
printf("error: ftest fseek\n");
fclose(fp);
return -1;
}
printf("succeed: ftest fseek\n");
fclose(fp);
return 0;
}
6)编译运行并查看测试结果
succeed: ftest fseek
2.ftell
用于获取文件中位置指针的偏移量。
1)头文件
#include
2)函数原型
long ftell(FILE*stream);
3)参数
stream:要操作的文件指针。
4)返回值
返回当前文件位置偏移量;若返回-1,表示出错。
5)示例:(打开ftest文件,将位置指针移动到文件末尾,查看当前的文件长度)
#include
int main()
{
int ft;
FILE *fp = fopen("ftest", "r");
if (!fp) {
printf("error: ftest open\n");
return -1;
}
ft = ftell(fp); //查看当前的文件偏移量
if (ft == -1) {
printf("error: ftest ftell1\n");
fclose(fp);
}
printf("ftest ftell1: %d\n", ft);
if (fseek(fp, 0, SEEK_END)) { //将位置指针移动到文件末尾
printf("error: ftest fseek\n");
fclose(fp);
}
ft = ftell(fp); //查看当前的文件偏移量
if (ft == -1) {
printf("error: ftest ftell2\n");
fclose(fp);
}
printf("ftest ftell2: %d\n", ft);
fclose(fp);
return 0;
}
6)编译运行并查看测试结果
ftest ftell1: 0
ftest ftell2: 15
3.rewind
用于将文件中位置指针设置到文件开头。
1)头文件
#include
2)函数原型
void rewind(FILE*stream);
3)参数
stream:要操作的文件指针。
4)返回值
无。
5)示例:(打开ftest文件,将位置指针移动到文件末尾,再使用rewind)
#include
int main()
{
int ft;
FILE *fp = fopen("ftest", "r");
if (!fp) {
printf("error: ftest open\n");
return -1;
}
if (fseek(fp, 0, SEEK_END)) { //将位置指针移动到末尾
printf("error: ftest fseek\n");
fclose(fp);
}
ft = ftell(fp); //查看当前的文件偏移量
if (ft == -1) {
printf("error: ftest ftell\n");
fclose(fp);
}
printf("ftest ftell1: %d\n", ft);
rewind(fp); //将位置指针移动到开头
ft = ftell(fp); //查看当前的文件偏移量
if (ft == -1) {
printf("error: ftest ftell\n");
fclose(fp);
}
printf("ftest ftell2: %d\n", ft);
fclose(fp);
return 0;
}
6)编译运行并查看测试结果
ftest ftell1: 15
ftest ftell2: 0