C 库 - rewind() 函数



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

语法

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

void rewind(FILE *stream);

参数

此函数只接受一个参数:

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

返回值

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 
广告