Функција сетбуф () у Ц ++ поставља интерни бафер који ће се користити за И / О операције у току.
прототип сетбуф ()
воид сетбуф (ФИЛЕ * ток, цхар * бафер);
Ако ме успремник није нулл, еквивалентно је позивању сетвбуф (стреам, буффер, _ИОФБФ, БУФСИЗ).
Ако је ме успремник нулл, еквивалентно је позивању сетвбуф (стреам, НУЛЛ, _ИОНБФ, 0). У овом случају је међуспремник искључен.
Дефинисано је у заглављу датотеке.
параметри сетбуф ()
- ток: ток датотека.
- бафер: показивач на бафер који може бити нула или не. Ако је нулл, међуспремник је искључен, иначе би требао имати најмање БУФСИЗ бајтова.
сетбуф () Повратна вредност
Ниједан
Следећа 2 примера илуструју употребу функције сетбуф (). Оба ова програма користе рад датотека. У првом примеру, бафер се поставља помоћу сетбуф () за интерно складиштење садржаја датотеке.
У следећем примеру, изјава setbuf(fp, NULL)
искључује међуспремник. Дакле, за читање садржаја датотеке користи се фреад ().
Пример 1: Како функционише функција сетбуф ()
#include #include using namespace std; int main () ( char str() = "Buffered Stream"; char buffer(BUFSIZ); FILE *fp; fp=fopen ("test.txt","wb"); setbuf(fp,buffer); fwrite(str, sizeof(str), 1, fp); fflush(fp); fclose(fp); cout << buffer; return 0; )
Када покренете програм, излаз ће бити:
Буферовани ток
Пример 2: функција сетбуф () са искљученим међуспремником
#include #include using namespace std; int main () ( char str() = "Unbuffered Stream"; char strFromFile(20); FILE *fp; fp=fopen ("test.txt","wb+"); setbuf(fp,NULL); fwrite(str, sizeof(str), 1, fp); fflush(fp); /* We need to rewind the file pointer and read the file because the data from test.txt isn't saved in any buffer */ rewind(fp); fread(strFromFile, sizeof(strFromFile), 1, fp); fclose(fp); cout << strFromFile; return 0; )
Када покренете програм, излаз ће бити:
Небуферисани ток