De functie setvbuf () in C ++ wordt gebruikt om de buffermodus en de grootte van de buffer te wijzigen of te specificeren.
setvbuf () prototype
int setvbuf (FILE * stream, char * buffer, int mode, size_t size);
De setvbuf()
functie verandert de buffermodus van de gegeven bestandsstroom in de waarde van modus.
Als de buffer niet nul is, is de grootte van de buffer de grootte, anders wijst de functie automatisch een buffer toe (op basis van de waarde van de grootte).
Het wordt gedefinieerd in het header-bestand.
setvbuf () Parameters
- stream: een bestandsstream.
- buffer: Pointer naar de buffer die door stream moet worden gebruikt.
- modus: Buffermodus. De soorten buffermodi zijn:
- _IOFBF: volledige buffering
- _IOLBF: lijnbuffering
- _IONBF: geen buffering
- size: de grootte van de buffer in bytes.
setvbuf () Retourwaarde
De setvbuf()
functie retourneert nul bij succes en niet-nul bij mislukking.
Voorbeeld: hoe de functie setvbuf () werkt
#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; )
Wanneer u het programma uitvoert, is de uitvoer:
… Dit is de tweede regel Dit is de eerste regel Dit is de tweede regel