C 库 - rewind() 函数



C 库函数 void rewind(FILE *stream) 将文件位置指针设置到给定流文件开头。这在执行读/写操作后需要从头重新读取文件内容时特别有用。

语法

以下是 C 库函数 rewind() 的语法:

void rewind(FILE *stream);

参数

此函数只接受一个参数:

  • FILE *stream: 指向 FILE 对象的指针,标识该流。FILE 对象通常由 fopen 函数获得,该函数打开文件并将其与流关联。

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

返回值

rewind 函数不返回值。它静默地执行操作。如果操作失败,它会将文件位置指示器设置为文件的开头,并清除流的文件结束指示器和错误指示器。

示例 1:重新读取文件

此示例演示如何读取文件,使用 rewind 重置位置指示器,然后再次读取文件。

以下是 C 库 rewind() 函数的示例。

#include <stdio.h> int main() { FILE *file = fopen("example.txt", "r"); char ch; if (file == NULL) { perror("Error opening file"); return 1; } printf("First read:\n"); while ((ch = fgetc(file)) != EOF) { putchar(ch); } rewind(file); printf("\n\nSecond read after rewind:\n"); while ((ch = fgetc(file)) != EOF) { putchar(ch); } fclose(file); return 0; }

输出

以上代码产生以下结果:

First read:
Hello, World!
This is a test file.

Second read after rewind:
Hello, World!
This is a test file.

示例 2:在二进制文件操作中使用 rewind

此示例演示在处理二进制文件时 rewind 的用法。

#include <stdio.h> int main() { FILE *file = fopen("binary.dat", "wb+"); int numbers[] = {1, 2, 3, 4, 5}; int read_numbers[5]; if (file == NULL) { perror("Error opening file"); return 1; } fwrite(numbers, sizeof(int), 5, file); rewind(file); fread(read_numbers, sizeof(int), 5, file); printf("Reading numbers after rewind:\n"); for (int i = 0; i < 5; i++) { printf("%d ", read_numbers[i]); } fclose(file); return 0; }

输出

执行上述代码后,我们将得到以下结果:

Reading numbers after rewind:
1 2 3 4 5 
广告