C 庫 - fflush() 函式



C 庫的 fflush() 函式用於重新整理流的輸出緩衝區。此函式強制將給定輸出或更新流的所有緩衝資料寫入檔案。當應用於輸入流時,其行為未定義。重新整理流可確保將記憶體中緩衝的任何資料寫入與流關聯的檔案或裝置。

語法

以下是 C 庫 fflush() 函式的語法:

int fflush(FILE *stream);

引數

  • stream: 這是一個指向 FILE 物件的指標,用於指定要重新整理的流。如果 stream 為 NULL,則 fflush 將重新整理所有開啟的輸出流。

返回值

如果緩衝區成功重新整理,fflush 函式返回 0,表示成功。如果發生錯誤,則返回 EOF,表示失敗,並且流的錯誤指示器被設定。

示例 1:重新整理輸出流

此示例演示如何使用 fflush 來確保緩衝輸出立即寫入檔案。

以下是 C 庫 fflush() 函式的示例。

#include <stdio.h>

int main() {
   FILE *file = fopen("example1.txt", "w");
   if (file == NULL) {
       perror("Failed to open file");
       return 1;
   }

   fprintf(file, "Hello, World!\n");

   // Ensure "Hello, World!" is written to the file immediately
   fflush(file); 

   fclose(file);
   return 0;
}

輸出

以上程式碼將“Hello, World!”寫入檔案,並使用 fflush 確保資料立即寫入磁碟,而不是等到檔案關閉。−

Hello, World!

示例 2:重新整理所有開啟的輸出流

在本例中,我們將不同資料寫入兩個檔案,並使用 fflush(NULL) 重新整理所有開啟的輸出流,確保所有資料在關閉檔案之前寫入磁碟。

#include <stdio.h>

int main() {
   FILE *file1 = fopen("example3_1.txt", "w");
   FILE *file2 = fopen("example3_2.txt", "w");
   if (file1 == NULL || file2 == NULL) {
       perror("Failed to open file");
       return 1;
   }
   
   fprintf(file1, "Data for file 1.\n");
   fprintf(file2, "Data for file 2.\n");
   
   // Flush all open output streams
   fflush(NULL); 
   
   fclose(file1);
   fclose(file2);
   return 0;
}

輸出

執行上述程式碼後,它將不同資料寫入兩個檔案,並使用 fflush(NULL) 重新整理所有開啟的輸出流,確保所有資料在關閉檔案之前寫入磁碟。−

Data for file 1.
Data for file 2.
廣告
© . All rights reserved.