- C 標準庫
- C 庫 - 首頁
- C 庫 - <assert.h>
- C 庫 - <complex.h>
- C 庫 - <ctype.h>
- C 庫 - <errno.h>
- C 庫 - <fenv.h>
- C 庫 - <float.h>
- C 庫 - <inttypes.h>
- C 庫 - <iso646.h>
- C 庫 - <limits.h>
- C 庫 - <locale.h>
- C 庫 - <math.h>
- C 庫 - <setjmp.h>
- C 庫 - <signal.h>
- C 庫 - <stdalign.h>
- C 庫 - <stdarg.h>
- C 庫 - <stdbool.h>
- C 庫 - <stddef.h>
- C 庫 - <stdio.h>
- C 庫 - <stdlib.h>
- C 庫 - <string.h>
- C 庫 - <tgmath.h>
- C 庫 - <time.h>
- C 庫 - <wctype.h>
- C 標準庫資源
- C 庫 - 快速指南
- C 庫 - 有用資源
- C 庫 - 討論
- C 程式設計資源
- C 程式設計 - 教程
- C - 有用資源
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.
廣告