Setvbuf () -funktionen i C ++ bruges til at ændre eller specificere buffertilstanden og størrelsen på bufferen.
setvbuf () prototype
int setvbuf (FILE * stream, char * buffer, int mode, size_t size);
Den setvbuf()
funktion ændrer buffering sekvenser i den pågældende fil strøm til værdien af funktionen.
Hvis bufferen ikke er nul, er størrelsen af bufferen størrelse, ellers tildeler funktionen automatisk en buffer (baseret på størrelsesværdien).
Det er defineret i header-fil.
setvbuf () Parametre
- stream: En filstream.
- buffer: Markør til bufferen, der skal bruges af stream.
- tilstand: Bufferingstilstand. Typerne af bufferingstilstande er:
- _IOFBF: fuld buffering
- _IOLBF: linjebuffering
- _IONBF: ingen buffering
- størrelse: Størrelsen af bufferen i byte.
setvbuf () Returværdi
De setvbuf()
funktion returnerer nul på succes og ikke-nul på fiasko.
Eksempel: Sådan fungerer setvbuf () -funktionen
#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ører programmet, vil output være:
… Dette er anden linje Dette er første linje Dette er anden linje