La funzione setvbuf () in C ++ viene utilizzata per modificare o specificare la modalità e la dimensione del buffer.
prototipo setvbuf ()
int setvbuf (FILE * stream, char * buffer, modalità int, size_t size);
La setvbuf()
funzione cambia la modalità di buffering del flusso di file specificato nel valore di modalità.
Se il buffer non è nullo, la dimensione del buffer è la dimensione, altrimenti la funzione alloca automaticamente un buffer (in base al valore della dimensione).
È definito nel file di intestazione.
parametri setvbuf ()
- stream: flusso di file.
- buffer: puntatore al buffer che deve essere utilizzato dal flusso.
- mode: modalità Buffering. I tipi di modalità di buffering sono:
- _IOFBF: buffering completo
- _IOLBF: buffer di riga
- _IONBF: nessun buffering
- dimensione: la dimensione del buffer in byte.
setvbuf () Restituisce il valore
La setvbuf()
funzione restituisce zero in caso di successo e diverso da zero in caso di fallimento.
Esempio: come funziona la funzione 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; )
Quando esegui il programma, l'output sarà:
… Questa è la seconda riga Questa è la prima riga Questa è la seconda riga