📜  如何使用 fread 在文件中移动 (1)

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

如何使用 fread 在文件中移动

在文件处理中,可能需要使用 fread 函数来读取文件内容,但如果需要在文件中移动,如何做到呢?本文将详细介绍如何使用 fread 函数在文件中移动的方法。

函数定义

fread 函数的定义如下:

size_t fread(void *ptr, size_t size, size_t count, FILE *stream);

其中,ptr 是读取的数据存放的内存地址;size 是每个元素的大小;count 是要读取的元素个数;stream 是文件指针用于指定要读取的文件。

移动文件指针

在读取文件时,文件指针会随着读取的内容不断向后移动。如果要移动文件指针,可以使用 fseek 函数或 rewind 函数。

fseek 函数

fseek 函数可以将文件指针移动到指定位置。它的定义如下:

int fseek(FILE *stream, long int offset, int whence);

其中,stream 是要移动指针的文件指针;offset 是移动的偏移量;whence 是从哪个位置开始移动。whence 取值如下:

  • SEEK_SET:从文件开头开始移动
  • SEEK_CUR:从当前位置开始移动
  • SEEK_END:从文件结尾开始移动

示例代码如下:

FILE *fp = fopen("file.txt", "r");
fseek(fp, 5, SEEK_SET); // 将文件指针移动到文件开头后第 5 个元素后面
char buffer[10];
fread(buffer, sizeof(char), 5, fp); // 读取文件开头后第 5 个元素后面的 5 个元素
rewind 函数

rewind 函数可以将文件指针移动到文件开头,等价于使用 fseek 函数将文件指针移动到文件开头的偏移量为 0 的位置。它的定义如下:

void rewind(FILE *stream);

示例代码如下:

FILE *fp = fopen("file.txt", "r");
rewind(fp); // 将文件指针移动到文件开头
char buffer[10];
fread(buffer, sizeof(char), 5, fp); // 读取文件开头的 5 个元素
完整示例代码
#include <stdio.h>

int main() {
    FILE *fp = fopen("file.txt", "r");
    fseek(fp, 5, SEEK_SET); // 将文件指针移动到文件开头后第 5 个元素后面
    char buffer[10];
    fread(buffer, sizeof(char), 5, fp); // 读取文件开头后第 5 个元素后面的 5 个元素
    rewind(fp); // 将文件指针移动到文件开头
    fread(buffer, sizeof(char), 5, fp); // 读取文件开头的 5 个元素
    fclose(fp);
    return 0;
}

以上就是如何使用 fread 在文件中移动的全部内容。