如何使用C语言的fseek库函数

206 阅读1分钟

本快速指南讨论了如何使用C语言的fseek库函数。fseek函数将一个设定的文件流的文件位置指示器设置为一个给定的偏移值。

基本用法

这个函数的一般语法是

int fseek (FILE *stream, int offset, int origin);

Fseek参数

该函数支持三个参数。

  1. stream - 指向文件对象的指针。
  2. offset- 从起始位置开始的偏移字节数。
  3. origin- 加入偏移值的位置。

fseek的原点值包括。

  1. SEEK_SET- 文件的开始。
  2. SEEK_CUR- 当前的游标位置。
  3. SEEK_END- 文件的结束。

fseek函数成功时返回0,失败时返回非零值。

例子1

假设我们有一个文本文件,其内容为。

“Hello world!,

This is C language calling for you!

Are you going you going to answer?”

我们可以使用SEEK_END来将指针移到文件的末尾。考虑一下下面所示的示例代码。

#include <stdio.h>

int main() {

    FILE *file;

    file = fopen("readme.txt", "r");

    fseek(file, 0, SEEK_END);

    printf("%ld\n", ftell(file));

    return 0;

}

光标移动到末端并打印出指针位置。因为我们把文件结束后的偏移值设置为0,所以它打印出91作为它的指针位置。

gcc fseek.c

./a.out

91

例2

要使用fseek移动到一个特定的位置,我们可以简单地使用SEEK_SET来从文件的开头移动指定的字节数。

一个例子的代码如图所示。

#include <stdio.h>

int main() {

    FILE *file;

    file = fopen("readme.txt", "r");

    fseek(file, 10, SEEK_SET);

    printf("%ld\n", ftell(file));

    return 0;

}

在上面的例子中,我们告诉指针要移动10个字节。这应该返回10作为当前的指针位置。

./a.out

10

总结

这个简短的教程向你展示了如何在C语言中使用fseek函数。