Funzione libreria C - setvbuf ()

Descrizione

La funzione di libreria C. int setvbuf(FILE *stream, char *buffer, int mode, size_t size) definisce come un flusso deve essere bufferizzato.

Dichiarazione

Di seguito è riportata la dichiarazione per la funzione setvbuf ().

int setvbuf(FILE *stream, char *buffer, int mode, size_t size)

Parametri

  • stream - Questo è il puntatore a un oggetto FILE che identifica un flusso aperto.

  • buffer- Questo è il buffer allocato dall'utente. Se impostata su NULL, la funzione alloca automaticamente un buffer della dimensione specificata.

  • mode - Specifica una modalità per il buffering dei file -

Sr.No. Modalità e descrizione
1

_IOFBF

Full buffering- In uscita, i dati vengono scritti una volta che il buffer è pieno. Su Input il buffer viene riempito quando viene richiesta un'operazione di input e il buffer è vuoto.

2

_IOLBF

Line buffering- In uscita, i dati vengono scritti quando un carattere di nuova riga viene inserito nello stream o quando il buffer è pieno, cosa che accade prima. In Input, il buffer viene riempito fino al successivo carattere di nuova riga quando viene richiesta un'operazione di input e il buffer è vuoto.

3

_IONBF

No buffering- Non viene utilizzato alcun buffer. Ogni operazione di I / O viene scritta il prima possibile. I parametri del buffer e della dimensione vengono ignorati.

  • size - Questa è la dimensione del buffer in byte

Valore di ritorno

Questa funzione restituisce zero in caso di successo, altrimenti viene restituito un valore diverso da zero.

Esempio

L'esempio seguente mostra l'utilizzo della funzione setvbuf ().

#include <stdio.h>

int main () {
   char buff[1024];

   memset( buff, '\0', sizeof( buff ));

   fprintf(stdout, "Going to set full buffering on\n");
   setvbuf(stdout, buff, _IOFBF, 1024);

   fprintf(stdout, "This is tutorialspoint.com\n");
   fprintf(stdout, "This output will go into buff\n");
   fflush( stdout );

   fprintf(stdout, "and this will appear when programm\n");
   fprintf(stdout, "will come after sleeping 5 seconds\n");

   sleep(5);

   return(0);
}

Compiliamo ed eseguiamo il programma sopra per produrre il seguente risultato. Qui il programma continua a bufferizzare l'output inbufffino a quando non incontra la prima chiamata a fflush (), dopodiché inizia di nuovo a eseguire il buffering dell'output e infine dorme per 5 secondi. Invia l'uscita rimanente a STDOUT prima che il programma esca.

Going to set full buffering on
This is tutorialspoint.com
This output will go into buff
and this will appear when programm
will come after sleeping 5 seconds