温馨提示×

C++ fseek 相对移动和绝对移动

c++
小樊
84
2024-07-15 17:45:40
栏目: 编程语言

在C++中,fseek函数用于在文件中定位指针的位置。fseek函数有两种模式:相对移动和绝对移动。

  1. 相对移动:相对移动是指根据当前位置来移动文件指针。相对移动模式有三种:SEEK_CURSEEK_SETSEEK_END

    • SEEK_CUR:从当前位置开始移动。如果offset为正数,则向文件末尾移动;如果offset为负数,则向文件开始移动。
    • SEEK_SET:从文件起始位置开始移动。如果offset为正数,则移动到文件指定位置;如果offset为负数,则移动到文件开始位置。
    • SEEK_END:从文件末尾开始移动。如果offset为正数,则向文件末尾移动;如果offset为负数,则向文件开始移动。
  2. 绝对移动:绝对移动是指直接移动文件指针到指定的位置。在绝对移动模式下,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_模式,我们可以灵活地控制文件指针的移动操作。

0