SETBUF |
Fixer le tampon |
---|---|
Langage C++ | cstdio (stdio.h) |
Syntaxe
void setbuf(FILE *ptrfichier,char *tampon) |
Paramètres
Nom | Description |
---|---|
ptrfichier | Ce paramètre permet d'indiquer l'identificateur de fichier |
tampon | Ce paramètre permet d'indiquer le tampon de données devant être écrit |
Description
Cette fonction permet de créer un tampon de fichier.
Remarques
- La fonction setbuf() est utilisée pour spécifier la mémoire tampon que le flux de données spécifié utilisera ou, si elle est appelée avec tampon définie sur null, pour désactiver la mise en mémoire tampon. Si un tampon défini par le programmeur doit être spécifié, il doit contenir des caractères BUFSIZ. Le BUFSIZ est défini dans cstdio.
- La fonction setbuf() ne renvoie aucune valeur.
- Définition et utilité : La fonction setbuf fait partie de la bibliothèque <cstdio> (ou <stdio.h>) et permet de définir un tampon (buffer) pour un flux de fichier donné. Elle est utilisée pour améliorer les performances des entrées et sorties en réduisant le nombre d'appels système nécessaires. En définissant un tampon, vous pouvez contrôler manuellement la manière dont les données sont lues ou écrites dans le fichier.
- Tampon personnalisé : En fournissant un tampon personnalisé, vous pouvez contrôler la taille et le contenu du tampon utilisé pour les opérations sur le flux. Cela permet d'optimiser les performances dans des situations spécifiques, comme le traitement de fichiers volumineux, où les opérations sur des blocs de données plus grands peuvent être plus efficaces que celles sur des petites unités de données.
- Mode tamponné et non tamponné : Par défaut, les flux de fichiers sont en mode tamponné, ce qui signifie que les données sont mises en cache dans un tampon avant d'être écrites ou lues. En appelant setbuf avec un tampon NULL, vous pouvez mettre un flux en mode non tamponné, ce qui peut être utile lorsque vous souhaitez que les données soient écrites ou lues immédiatement, sans mise en cache. Cela est souvent utilisé pour les flux interactifs, comme stdin et stdout. Exemple pour un mode non tamponné :
- setbuf(stdout, NULL); // Désactive le tampon pour stdout
- Optimisation des performances : L'utilisation de setbuf permet d'optimiser les performances d'un programme en réduisant le nombre d'accès physiques au disque ou au terminal. En fonction de la taille du tampon, cela peut améliorer la vitesse de lecture et d'écriture des fichiers ou des flux. Cela est particulièrement important pour les applications traitant de grandes quantités de données ou faisant des entrées/sorties fréquentes. Exemple :
- Effets sur la gestion de la mémoire : Lorsque vous utilisez setbuf, le tampon que vous passez doit être suffisamment grand pour contenir les données que vous souhaitez lire ou écrire. Il est important de s'assurer que ce tampon est alloué correctement et qu'il a une taille appropriée pour éviter les débordements de tampon. En outre, si vous définissez un tampon personnalisé, vous êtes responsable de sa gestion (allocation, libération de mémoire).
- Compatibilité avec les flux standards : setbuf peut être utilisée sur les flux standards tels que stdin, stdout, et stderr. Cependant, dans certains cas, stderr est déjà en mode non tamponné par défaut. Par conséquent, il n'est généralement pas nécessaire de modifier le tampon de stderr avec setbuf. Il est donc plus courant de l'utiliser avec stdin et stdout, notamment pour personnaliser le comportement du tampon pour l'entrée et la sortie.
- Impact sur les systèmes et portabilité : Le comportement de setbuf peut varier en fonction des implémentations du système d'exploitation et de la bibliothèque C standard utilisée. Par exemple, certains systèmes peuvent choisir de ne pas respecter strictement les spécifications de mise en cache ou de tamponnage, ce qui peut entraîner des comportements légèrement différents sur différents environnements. Il est donc important de tester les performances et la fonctionnalité sur les systèmes cibles si votre application dépend fortement de setbuf.
Exemple
Voici un exemple d'utilisation avec un tampon personnalisé :
Voir également
Langage de programmation - C++ - Référence de procédures et fonctions - fflush
Langage de programmation - C++ - Référence de procédures et fonctions - fopen
Langage de programmation - C++ - Référence de procédures et fonctions - fseek
Langage de programmation - C++ - Référence de procédures et fonctions - setvbuf
Langage de programmation - C - Référence de procédures et fonctions - setbuf
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 734.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 228.
Dernière mise à jour : Lundi, le 3 août 2015