C 庫 - setbuf() 函式



C 庫的 setbuf() 函式用於為檔案流定義緩衝區。此函式允許程式設計師透過設定自定義緩衝區或將其設定為 NULL 來啟用或停用檔案流的緩衝。緩衝是一種用於提高輸入/輸出操作效率的技術。

語法

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

void setbuf(FILE *stream, char *buffer);

引數

此函式接受兩個引數:

  • FILE *stream: 這是一個指向 FILE 物件的指標,用於標識要設定緩衝區的流。
  • char *buffer: 這是一個指向字元陣列的指標,將用作流的緩衝區。如果 buffer 為 NULL,則停用給定流的緩衝。

返回值

setbuf 函式不返回值。

示例 1:設定自定義緩衝區

此示例在寫入檔案流 fp 之前為其設定自定義緩衝區。自定義緩衝區 buf 的大小為 BUFSIZ,這是一個定義預設緩衝區大小的宏。

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

#include <stdio.h>

int main() {
   FILE *fp;
   char buf[BUFSIZ];

   fp = fopen("example1.txt", "w");
   if (fp == NULL) {
       perror("Error opening file");
       return 1;
   }

   setbuf(fp, buf);

   fprintf(fp, "This is a test string.\n");
   fclose(fp);

   return 0;
}

輸出

以上程式碼在 example1.txt 檔案中生成以下結果:

This is a test string.

示例 2:使用小型緩衝區

此示例為檔案流 fp 使用一個非常小的緩衝區(10 位元組)。這可能效率不高,但演示瞭如何設定自定義緩衝區大小。

#include <stdio.h>

int main() {
    FILE *fp;
    char small_buf[10];

    fp = fopen("example3.txt", "w");
    if (fp == NULL) {
        perror("Error opening file");
        return 1;
    }

    setbuf(fp, small_buf);

    fprintf(fp, "This text will be buffered using a small buffer.\n");
    fclose(fp);

    return 0;
}

輸出

執行以上程式碼後,我們在 example3.txt 檔案中獲得以下結果:

This text will be buffered using a small buffer.
廣告

© . All rights reserved.