在C++中,fseek
函数用于在文件中定位指针的位置。fseek
函数有两种模式:相对移动和绝对移动。
相对移动:相对移动是指根据当前位置来移动文件指针。相对移动模式有三种:SEEK_CUR
、SEEK_SET
、SEEK_END
。
SEEK_CUR
:从当前位置开始移动。如果offset
为正数,则向文件末尾移动;如果offset
为负数,则向文件开始移动。SEEK_SET
:从文件起始位置开始移动。如果offset
为正数,则移动到文件指定位置;如果offset
为负数,则移动到文件开始位置。SEEK_END
:从文件末尾开始移动。如果offset
为正数,则向文件末尾移动;如果offset
为负数,则向文件开始移动。绝对移动:绝对移动是指直接移动文件指针到指定的位置。在绝对移动模式下,offset
表示文件指针要移动到的位置。
示例代码:
#include <iostream>
#include <cstdio>
int main() {
FILE *fp = fopen("test.txt", "r");
if (fp == NULL) {
std::cout << "Error opening file\n";
return 1;
}
// 相对移动
fseek(fp, 10, SEEK_SET); // 从文件起始位置移动到第10个字节处
fseek(fp, -5, SEEK_CUR); // 从当前位置向前移动5个字节
fseek(fp, 0, SEEK_END); // 移动到文件末尾
// 绝对移动
fseek(fp, 20, SEEK_SET); // 移动文件指针到第20个字节处
fclose(fp);
return 0;
}
在上面的示例中,我们展示了如何使用fseek
函数在文件中进行相对移动和绝对移动。根据不同的SEEK_
模式,我们可以灵活地控制文件指针的移动操作。