Fonction de bibliothèque C - setvbuf ()

La description

La fonction de bibliothèque C int setvbuf(FILE *stream, char *buffer, int mode, size_t size) définit comment un flux doit être mis en mémoire tampon.

Déclaration

Voici la déclaration de la fonction setvbuf ().

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

Paramètres

  • stream - Il s'agit du pointeur vers un objet FILE qui identifie un flux ouvert.

  • buffer- Il s'agit du tampon alloué par l'utilisateur. Si elle est définie sur NULL, la fonction alloue automatiquement un tampon de la taille spécifiée.

  • mode - Ceci spécifie un mode pour la mise en mémoire tampon des fichiers -

N ° Sr. Mode et description
1

_IOFBF

Full buffering- En sortie, les données sont écrites une fois que le tampon est plein. En entrée, le tampon est rempli lorsqu'une opération d'entrée est demandée et le tampon est vide.

2

_IOLBF

Line buffering- En sortie, les données sont écrites lorsqu'un caractère de nouvelle ligne est inséré dans le flux ou lorsque la mémoire tampon est pleine, quoi qu'il arrive en premier. En entrée, le tampon est rempli jusqu'au prochain caractère de nouvelle ligne lorsqu'une opération d'entrée est demandée et que le tampon est vide.

3

_IONBF

No buffering- Aucun tampon n'est utilisé. Chaque opération d'E / S est écrite dès que possible. Les paramètres de tampon et de taille sont ignorés.

  • size - C'est la taille du tampon en octets

Valeur de retour

Cette fonction renvoie zéro en cas de succès sinon, une valeur différente de zéro est renvoyée.

Exemple

L'exemple suivant montre l'utilisation de la fonction 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);
}

Compilons et exécutons le programme ci-dessus pour produire le résultat suivant. Ici, le programme garde la mémoire tampon de la sortie dansbuffjusqu'à ce qu'il fasse face au premier appel à fflush (), après quoi il recommence à mettre en mémoire tampon la sortie et se met finalement en veille pendant 5 secondes. Il envoie la sortie restante au STDOUT avant la sortie du programme.

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