FPUTC |
Caractère à mettre dans le fichier |
---|---|
Langage C++ | cstdio (stdio.h) |
Syntaxe
int fputc(int car,FILE *ptrfichier); |
Paramètres
Nom | Description |
---|---|
ptrfichier | Ce paramètre permet d'indiquer l'identificateur de fichier |
car | Ce paramètre permet d'indiquer le caractère à écrire |
Description
Cette fonction effectue l'écriture de caractère dans un fichier.
Remarques
- La fonction fputc() écrit le caractère car dans le flux de données spécifié à la position actuelle du fichier, puis fait avancer l'indicateur de position du fichier. Même si car est déclaré comme un type de données int pour des raisons historiques, il est converti par fputc() en un caractère non signé. Étant donné que tous les paramètres de caractères sont élevés en nombres entiers au moment de l'appel, vous verrez généralement les valeurs de caractères utilisées comme paramètres. Si un entier était utilisé, le ou les octets de poids fort seraient simplement supprimés.
- La valeur renvoyée par fputc() est la valeur du caractère écrit. Si une erreur se produit, un EOF est renvoyé. Pour les fichiers ouverts pour des opérations binaires, un EOF peut être un caractère valide et la fonction ferror() devra être utilisée pour déterminer si une erreur s'est réellement produite.
- Définition et utilité : La fonction fputc permet d'écrire un unique caractère dans un fichier. Elle est définie dans la bibliothèque <cstdio>, et son usage est simple : elle prend un caractère et un pointeur vers un fichier, puis l'écrit dans ce fichier. Cette fonction est utile pour écrire des fichiers caractère par caractère, notamment dans des situations où une gestion fine des flux est nécessaire.
- Différence avec putc : fputc et putc ont des fonctionnalités similaires, mais putc peut parfois être implémentée comme une macro, ce qui la rend légèrement plus rapide dans certains cas. Cependant, fputc est plus portable, car elle est garantie d'être une fonction, alors que putc peut être une macro dans certaines implémentations.
- Problème de performance avec de grandes écritures : Écrire un fichier caractère par caractère avec fputc peut être inefficace, car chaque appel peut entraîner une opération d'entrée/sortie coûteuse. Pour améliorer les performances, il est recommandé d'utiliser un tampon (setvbuf) ou d'écrire en blocs avec fwrite lorsqu'on doit écrire de grandes quantités de données.
- Compatibilité avec les flux standards (stdout, stderr) : fputc peut être utilisée pour écrire sur la sortie standard (stdout) ou l'erreur standard (stderr) en passant ces flux comme argument. Par exemple :
- Gestion des retours à la ligne selon le systèmes : Sur les systèmes Windows, si un fichier est ouvert en mode texte ("w" au lieu de "wb"), \n sera automatiquement converti en \r\n. Cela peut poser problème si on souhaite un format précis, notamment pour la compatibilité entre systèmes Unix et Windows. Pour éviter ces conversions automatiques, il est recommandé d'ouvrir le fichier en mode binaire ("wb").
Cela permet d'écrire des caractères individuellement dans des flux sans avoir à utiliser printf ou d'autres méthodes.
Exemple
Voici quelques exemples typiques de l'utilisation de cette fonction :

- #include <iostream>
- #include <cstdio>
- #include <cstdlib>
- #include <cstring>
-
- void putString(FILE * Handle,const char * string) {
- int I;
- for(I = 0; I < strlen(string); I++) fputc(string[I],Handle);
- }
-
- int main()
- {
- FILE * Handle = fopen("monfichier.txt", "w+");
- if(Handle != NULL) {
- putString(Handle,"Gladir.com\n");
- fclose(Handle);
- }
- return 0;
- }
on obtiendra le résultat suivant dans le fichier «monfichier.txt» :
Gladir.comVoir également
Langage de programmation - C++ - Référence de procédures et fonctions - fgetc
Langage de programmation - C++ - Référence de procédures et fonctions - putc
Langage de programmation - C - Référence de procédures et fonctions - fputc
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 731.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 110.