C ทำงานห้องสมุด - setvbuf ()
ลักษณะ
C ทำงานห้องสมุดint setvbuf (File * กระแสถ่าน buffer * โหมด int ขนาด size_t) เพื่อกำหนดวิธีการบัฟเฟอร์กระแส
คำแถลง
นี่คือ () ฟังก์ชัน setvbuf คำสั่ง
int setvbuf(FILE *stream, char *buffer, int mode, size_t size)
พารามิเตอร์
- กระแส - นี้เป็นตัวชี้ไปยังแฟ้มชี้ไปยังวัตถุแฟ้มระบุวัตถุกระแสเปิด
- บัฟเฟอร์ - ซึ่งได้รับมอบหมายให้บัฟเฟอร์ผู้ใช้ถ้าตั้งค่าเป็น NULL ฟังก์ชันอัตโนมัติจะกำหนดขนาดของบัฟเฟอร์ที่ระบุ
- โหมด - โหมดนี้ระบุไฟล์บัฟเฟอร์:
模式 | 描述 |
---|---|
_IOFBF | 全缓冲:对于输出,数据在缓冲填满时被一次性写入。对于输入,缓冲会在请求输入且缓冲为空时被填充。 |
_IOLBF | 行缓冲:对于输出,数据在遇到换行符或者在缓冲填满时被写入,具体视情况而定。对于输入,缓冲会在请求输入且缓冲为空时被填充,直到遇到下一个换行符。 |
_IONBF | 无缓冲:不使用缓冲。每个 I/O 操作都被即时写入。buffer 和 size 参数被忽略。 |
- ขนาด - นี่คือขนาดของบัฟเฟอร์ไบต์
ราคาย้อนกลับ
หากประสบความสำเร็จการทำงานกลับ 0 มิฉะนั้นก็จะส่งกลับค่าไม่ใช่ศูนย์
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงให้เห็นถึง setvbuf () ฟังก์ชั่นถูกนำมาใช้
#include <stdio.h> int main() { char buff[1024]; memset( buff, '\0', sizeof( buff )); fprintf(stdout, "启用全缓冲\n"); setvbuf(stdout, buff, _IOFBF, 1024); fprintf(stdout, "这里是 w3cschool.cc\n"); fprintf(stdout, "该输出将保存到 buff\n"); fflush( stdout ); fprintf(stdout, "这将在编程时出现\n"); fprintf(stdout, "最后休眠五秒钟\n"); sleep(5); return(0); }
Let 's รวบรวมและเรียกใช้โปรแกรมดังกล่าวข้างต้นซึ่งจะก่อให้เกิดผลดังต่อไปนี้นี่คือโปรแกรมที่จะบันทึกบัฟเฟอร์ออกไปควายจนสายแรกที่ fflush ()ก่อนที่จะเริ่มการส่งออกบัฟเฟอร์ของสุดท้าย 5 วินาทีของการนอนหลับ มันจะเป็นก่อนที่จะสิ้นสุดของโปรแกรมเพื่อส่งผลผลิตที่เหลือ STDOUT
启用全缓冲 这里是 w3cschool.cc 该输出将保存到 buff 这将在编程时出现 最后休眠五秒钟