在C++中,fseek
函数用于在文件中定位指针的位置。fseek
函数有两种模式:相对移动和绝对移动。
-
相对移动:相对移动是指根据当前位置来移动文件指针。相对移动模式有三种:
SEEK_CUR
、SEEK_SET
、SEEK_END
。SEEK_CUR
:从当前位置开始移动。如果offset
为正数,则向文件末尾移动;如果offset
为负数,则向文件开始移动。SEEK_SET
:从文件起始位置开始移动。如果offset
为正数,则移动到文件指定位置;如果offset
为负数,则移动到文件开始位置。SEEK_END
:从文件末尾开始移动。如果offset
为正数,则向文件末尾移动;如果offset
为负数,则向文件开始移动。
-
绝对移动:绝对移动是指直接移动文件指针到指定的位置。在绝对移动模式下,
offset
表示文件指针要移动到的位置。
示例代码:
#include#include 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_
模式,我们可以灵活地控制文件指针的移动操作。