Hàm setvbuf () trong C ++ được sử dụng để thay đổi hoặc chỉ định chế độ đệm và kích thước của bộ đệm.
nguyên mẫu setvbuf ()
int setvbuf (FILE * stream, char * buffer, int mode, size_t size);
Các setvbuf()
chức năng thay đổi chế độ đệm của con suối tập tin trao cho các giá trị của chế độ.
Nếu bộ đệm không null, kích thước của bộ đệm là kích thước, nếu không thì hàm tự động cấp phát bộ đệm (dựa trên giá trị của kích thước).
Nó được định nghĩa trong tệp tiêu đề.
Tham số setvbuf ()
- stream: Một dòng tệp.
- buffer: Con trỏ tới vùng đệm sẽ được sử dụng theo luồng.
- mode: Chế độ đệm. Các loại chế độ đệm là:
- _IOFBF: bộ đệm đầy đủ
- _IOLBF: đệm dòng
- _IONBF: không đệm
- size: Kích thước của bộ đệm tính bằng byte.
setvbuf () Giá trị trả về
Các setvbuf()
hàm trả về số không thành công và khác không trên thất bại.
Ví dụ: Cách hoạt động của hàm setvbuf ()
#include #include #define SIZE 1024 using namespace std; int main() ( char buffer(SIZE) = "… "; char str() = "This is first lineThis is second line"; FILE *fp = fopen("test.txt","wb+"); /* no buffering, buffer remains unchanged */ setvbuf(fp,buffer,_IONBF,SIZE); fwrite(str, sizeof(str), 1, fp); cout << buffer << endl; /* line buffering, only a single line is buffered */ setvbuf(fp,buffer,_IOLBF,SIZE); fwrite(str, sizeof(str), 1, fp); cout << buffer << endl; /* full buffering, all the contents are buffered */ setvbuf(fp,buffer,_IOFBF,SIZE); fwrite(str, sizeof(str), 1, fp); cout << buffer << endl; fclose(fp); return 0; )
Khi bạn chạy chương trình, đầu ra sẽ là:
… Đây là dòng thứ hai Đây là dòng đầu tiên Đây là dòng thứ hai