English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriel de base en langage C

Contrôle de flux C

C Language Functions

C Language Arrays

C Language Pointers

C Language Strings

Structure C

Fichier C

Autres C

Manuel de référence C

Utilisation et exemple de la fonction setvbuf() de la bibliothèque C

C Standard Library - <stdio.h>

Fonction de bibliothèque C int setvbuf(FILE *stream, char *buffer, int mode, size_t size) Définir comment le flux stream doit être tamponné.

Déclaration

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

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

Paramètres

  • stream -- C'est un pointeur vers un objet FILE, qui identifie un flux ouvert.
  • buffer -- C'est le tampon alloué à l'utilisateur. Si il est réglé sur NULL, la fonction分配e automatiquement un tampon de la taille spécifiée.
  • mode -- Cela spécifie le mode de tampon du fichier :
ModeDescription
_IOFBFTampon complet:Pour la sortie, les données sont écrites en une seule fois lorsque le tampon est plein. Pour l'entrée, le tampon est rempli jusqu'à ce qu'il rencontre une demande d'entrée et que le tampon soit vide.
_IOLBFTampon par ligne:Pour la sortie, les données sont écrites dès qu'elles rencontrent un retour chariot ou que le tampon est plein, selon le cas. Pour l'entrée, le tampon est rempli jusqu'à ce qu'il rencontre le prochain retour chariot lorsque la demande d'entrée est effectuée et que le tampon est vide.
_IONBFSans tampon:Ne pas utiliser de tampon. Chaque I/Les opérations O sont écrites immédiatement. Les paramètres buffer et size sont ignorés.
  • size --C'est la taille du tampon, en octets.

Valeur de retour

Si la fonction réussit, elle renvoie 0, sinon elle renvoie une valeur non nulle.

Exemple en ligne

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, "Activer le mode tampon complet\n");
   setvbuf(stdout, buff, _IOFBF, 1024);
   fprintf(stdout, "Voici oldtoolbag.com\n");
   fprintf(stdout, "Cette sortie sera sauvegardée dans buff\n");
   fflush( stdout );
   fprintf(stdout, "Cela se produira pendant la programmation\n");
   fprintf(stdout, "Le sommeil de cinq secondes est terminé\n");
   sleep(5);
   return(0);
}

Laissez compiler et exécuter le programme ci-dessus, cela produira les résultats suivants. Ici, le programme sauvegarde la sortie tampon dans buffuntil the first call fflush() Then start buffering output, and finally pause 5 Seconds. It will send the remaining output to STDOUT before the program ends.

Enable full buffering
Here is oldtoolbag.com
This output will be saved to buff
This will occur during programming
Pause for five seconds lastly

C Standard Library - <stdio.h>