📜  fseek 函数 in - C 编程语言(1)

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

fseek 函数 in C 编程语言

介绍

fseek() 函数用于设置文件指针位置。它是 C 编程语言中的标准 I/O 函数。使用 fseek() 函数可以移动文件指针到文件中的特定位置,并从该位置开始读取或写入数据。

语法

下面是 fseek() 函数的语法:

int fseek(FILE *stream, long offset, int whence);
  • stream:文件指针。
  • offset:偏移量,指定从起始位置开始移动指针的字节数,可以是正值或负值。如果是负值,则倒退。
  • whence:起始位置,指定偏移量是从哪个位置开始算起。它的取值可以是下面三个定位符中的任意一个:
    • SEEK_SET:文件开头。
    • SEEK_CUR:文件指针的当前位置(偏移量是相对于这个位置进行的)。
    • SEEK_END:文件结尾。
返回值

如果成功移动文件指针,则 fseek() 函数返回 0。如果发生错误,则返回非 0 值。

示例

下面是 fseek() 函数的一个示例:

#include <stdio.h>

int main() {
    FILE *fp;
    char ch;

    /* 打开文件 */
    fp = fopen("file.txt", "r");

    /* 移动文件指针到文件结尾 */
    fseek(fp, 0, SEEK_END);

    /* 确定文件中的字符数 */
    long size = ftell(fp);

    /* 移动文件指针到文件开头 */
    fseek(fp, 0, SEEK_SET);

    /* 逐个读取字符,并输出到控制台 */
    for (int i = 0; i < size; i++) {
        ch = fgetc(fp);
        putchar(ch);
    }

    /* 关闭文件 */
    fclose(fp);
    return 0;
}

上面的示例程序打开一个名为 "file.txt" 的文件,并使用 fseek() 函数将文件指针移动到文件结尾。然后,它通过 ftell() 函数确定文件中的字符数。接下来,它再将文件指针移动到文件开头,并逐个读取字符并输出到控制台。最后,它关闭文件。

注意事项
  • fseek() 函数只能用于随机访问文件。
  • 如果移动文件指针到的位置是无效的,则 fseek() 函数可能会将文件指针设置到一个未定义的位置。
  • 使用 fseek() 函数时,为了避免与其他操作系统之间的兼容性问题,最好使用 SEEK_SET、SEEK_CUR 和 SEEK_END 宏来指定偏移量的起始位置。
参考文献