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 
廣告
© . All rights reserved.