Setvbuf () -funksjonen i C ++ brukes til å endre eller spesifisere buffermodus og størrelse på bufferen.
setvbuf () prototype
int setvbuf (FIL * stream, char * buffer, int mode, size_t size);
Den setvbuf()
funksjonen endrer buffermodus for gitt fil strømmen til verdien av modus.
Hvis bufferen ikke er null, er størrelsen på bufferen størrelse, ellers tildeler funksjonen automatisk en buffer (basert på verdien av størrelsen).
Det er definert i topptekstfilen.
setvbuf () Parametere
- stream: En filstrøm.
- buffer: peker til bufferen som skal brukes av stream.
- modus: Buffermodus. Typer buffermodus er:
- _IOFBF: full buffering
- _IOLBF: linjebuffering
- _IONBF: ingen buffering
- størrelse: Størrelsen på bufferen i byte.
setvbuf () Returverdi
Den setvbuf()
funksjonen returnerer null på suksess og ikke-null på fiasko.
Eksempel: Hvordan funksjonen setvbuf () fungerer
#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 kjører programmet, vil utdataene være:
… Dette er andre linje Dette er første linje Dette er andre linje