📜  C++ fseek()(1)

📅  最后修改于: 2023-12-03 15:13:54.248000             🧑  作者: Mango

C++ fseek()

概述

fseek() 是 C 语言中的一个标准函数,它用于定位文件指针的位置。在 C++ 中,它也是一个常用的文件操作函数,可以用来移动文件指针到文件中的任意位置。

函数原型:

int fseek(FILE *stream, long int offset, int origin);
  • stream:文件流指针。
  • offset:偏移量,可以是正数也可以是负数,用于指定偏移的字节数。
  • origin:起始位置,可以是以下三个值之一:
    • SEEK_SET:文件开头
    • SEEK_CUR:当前位置
    • SEEK_END:文件结尾

函数返回值为 0 表示成功,非 0 值表示失败。

示例

以下示例演示了如何使用 fseek() 函数,将文件指针移动到文件开头、结尾和当前位置。

#include <cstdio>

int main() {
    FILE* pFile = std::fopen("example.txt", "r");
    if (pFile != nullptr) {
        // 移动到文件开头
        std::fseek(pFile, 0, SEEK_SET);

        // 移动到文件结尾
        std::fseek(pFile, 0, SEEK_END);

        // 移动到当前位置
        std::fseek(pFile, -4, SEEK_CUR);

        std::fclose(pFile);
    }
    return 0;
}
注意事项
  • 如果使用二进制文件流,offset 参数应为字节数,如果使用文本文件流,则应为字符数。
  • 移动文件指针可能会抛出异常或导致程序崩溃,因此在使用 fseek() 函数时应格外小心,尤其是在多线程环境下。
  • 在某些操作系统或文件系统上,使用 fseek() 函数可能会有限制,例如最大偏移量、文件大小、文件大小必须是某个固定值等。需要查看相关的操作系统或文件系统文档以确定这些限制。