Funkcia setvbuf () v C ++ sa používa na zmenu alebo určenie režimu medzipamäte a veľkosti medzipamäte.
prototyp setvbuf ()
int setvbuf (FILE * stream, char * buffer, int mode, size_t size);
setvbuf()
Funkcia zmení režim ukladania do vyrovnávacej pamäte daného streamu súboru na hodnotu režimu.
Ak vyrovnávacia pamäť nie je nulová, veľkosť vyrovnávacej pamäte je veľkosť, inak funkcia automaticky alokuje vyrovnávaciu pamäť (na základe hodnoty veľkosti).
Je definované v hlavičkovom súbore.
parametre setvbuf ()
- stream: stream súborov.
- buffer: Ukazovateľ na vyrovnávaciu pamäť, ktorá sa má použiť v prúde.
- režim: Režim ukladania do vyrovnávacej pamäte. Typy režimov ukladania do vyrovnávacej pamäte sú:
- _IOFBF: úplné ukladanie do vyrovnávacej pamäte
- _IOLBF: ukladanie do vyrovnávacej pamäte riadkov
- _IONBF: žiadne ukladanie do vyrovnávacej pamäte
- size: Veľkosť vyrovnávacej pamäte v bajtoch.
setvbuf () Vrátená hodnota
Tieto setvbuf()
funkcie vráti nulu pri úspechu a nenulové pri zlyhaní.
Príklad: Ako funguje funkcia 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; )
Po spustení programu bude výstup:
… Toto je druhý riadok Toto je prvý riadok Toto je druhý riadok