Setvbuf () -funktionen i C ++ används för att ändra eller specificera buffertläget och buffertens storlek.
setvbuf () prototyp
int setvbuf (FIL * stream, char * buffer, int mode, size_t size);
Den setvbuf()
funktionen ändrar buffert steg i respektive fil ström till ett värde av läget.
Om bufferten inte är noll är storleken på bufferten storlek, annars tilldelar funktionen automatiskt en buffert (baserat på storleksvärdet).
Det definieras i rubrikfilen.
setvbuf () Parametrar
- stream: En filström.
- buffert: pekare till bufferten som ska användas av ström.
- läge: Buffertläge. Typerna av buffertlägen är:
- _IOFBF: full buffring
- _IOLBF: linjebuffring
- _IONBF: ingen buffring
- storlek: Storleken på bufferten i byte.
setvbuf () Returvärde
De setvbuf()
funktionen returnerar noll på framgång och noll på misslyckande.
Exempel: Hur funktionen setvbuf () fungerar
#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; )
När du kör programmet blir resultatet:
… Detta är andra raden Detta är första raden Detta är andra raden