FPRINTF |
Imprime avec format dans le fichier |
---|---|
Langage C++ | cstdio (stdio.h) |
Syntaxe
int fprintf(FILE *ptrfichier,const char *texte,...) |
Paramètres
Nom | Description | |
---|---|---|
ptrfichier | Ce paramètre permet d'indiquer l'identificateur de fichier | |
texte | Ce paramètre permet d'indiquer le texte à afficher. Il est a noter que un ou plusieurs des spécificateurs suivants peuvent être inclus dans le texte et il utilisera un argument supplémentaire pour chaque spécificateurs : | |
Spécificateur | Description | |
%c | Ce spécificateur indique d'insérer à cette position un caractère contenu dans la liste des arguments après le texte | |
%d | Ce spécificateur indique d'insérer à cette position un entier sous forme décimal contenu dans la liste des arguments après le texte | |
%f | Ce spécificateur indique d'insérer à cette position un nombre à virgule flottante contenu dans la liste des arguments après le texte | |
%i | Ce spécificateur indique d'insérer à cette position un entier contenu dans la liste des arguments après le texte | |
%o | Ce spécificateur indique d'insérer à cette position un entier sous forme octal contenu dans la liste des arguments après le texte | |
%s | Ce spécificateur indique d'insérer à cette position une chaîne de caractères contenu dans la liste des arguments après le texte | |
%x | Ce spécificateur indique d'insérer à cette position un entier sous forme hexadécimal contenu dans la liste des arguments après le texte | |
Il est possible d'ajouter une précision du nombre décimal afficher en insérant le nombre entre le symbole de pourcentage et la lettre. |
Description
Cette fonction effectue l'écriture de texte selon un certain format dans un fichier.
Remarques
- La fonction fprintf() renvoie les valeurs des paramètres composant la liste de paramètres comme spécifié dans la chaîne de caractères de format vers le flux de données pointé par ptrfichier. La valeur de retour est le nombre de caractères réellement affichés. Si une erreur se produit, un nombre négatif est renvoyé.
- Il peut y avoir de zéro à plusieurs paramètres, le nombre maximum dépendant du système.
- Les opérations de la chaîne de caractères de contrôle de format et des commandes sont identiques à celles de printf().
- Définition et utilité : La fonction fprintf en C++ est utilisée pour écrire des données formatées dans un fichier. Elle est définie dans la bibliothèque <cstdio> et permet d'envoyer des données à un fichier ouvert, en utilisant une syntaxe de formatage similaire à celle de la fonction printf. Elle est idéale pour créer des fichiers de sortie avec un format spécifique, ce qui la rend couramment utilisée pour générer des rapports, des journaux de bord ou des fichiers de configuration.
- Comportement du formatage : Comme printf, fprintf utilise des spécificateurs de format pour indiquer comment les
différents types de données doivent être affichés. Par exemple, %d pour les entiers, %f pour les nombres à virgule flottante, %s pour les chaînes de caractères,... Cela permet un
contrôle précis sur la façon dont les données sont écrites dans le fichier. Par exemple :
- fprintf(fichier, "Valeur: %d, Pi approximatif: %.2f\n", 42, 3.14159);
- Retour de valeur : La fonction fprintf retourne le nombre de caractères effectivement écrits dans le fichier. Si une erreur se produit, elle renvoie un nombre négatif. Il est donc possible de vérifier si l'écriture s'est bien déroulée en comparant le retour de fprintf avec une valeur négative. Par exemple :
- Utilisation avec des fichiers ouverts : fprintf est utilisé avec des fichiers ouverts en mode texte ou binaire (lorsque le fichier est ouvert avec fopen). Si le fichier est ouvert en mode texte, les caractères spéciaux comme le retour à la ligne peuvent être interprétés différemment selon le système d'exploitation. Par exemple, sous Windows, \n est généralement converti en \r\n, tandis que sous Unix/Linux, il reste simplement \n.
- Précision et contrôle des sorties : fprintf offre un contrôle très précis sur la manière dont les nombres à virgule flottante sont affichés. Par exemple, on peut spécifier le nombre de décimales à afficher en utilisant des modificateurs comme %.2f pour afficher un nombre à deux décimales. Cela est utile pour des sorties où la précision est importante, comme dans les applications scientifiques, financières ou techniques.
- Sécurisation et risque de format String : Comme avec printf, il existe un risque d'attaque par "format string" si des chaînes de format non contrôlées sont utilisées dans fprintf. Par exemple, si un utilisateur fournit un format de chaîne malveillant, il peut causer des comportements indésirables. Il est donc important de valider soigneusement les chaînes de format avant de les utiliser, surtout si elles proviennent de sources non fiables.
- Flexibilité dans la destination : L'un des avantages majeurs de fprintf est qu'il peut écrire non seulement dans des fichiers physiques, mais aussi dans des flux d'entrée/sortie standard, comme stdout ou stderr. Cela permet une grande flexibilité dans les programmes. Par exemple, pour écrire dans la sortie standard, vous pouvez utiliser :
- fprintf(stdout, "Affichage sur la sortie standard : %d\n", 10);
Exemple
Voici divers exemple d'affichages de format dans un fichier :
![](../../IMAGES/play.gif)
- #include <cstdio>
- #include <cstdlib>
-
- int main()
- {
- FILE * Handle = fopen("monfichier.txt", "w+");
- if(Handle != NULL) {
- fprintf(Handle,"Boujour!\n");
- fprintf(Handle,"Entier %%i = %i\n",15);
- fprintf(Handle,"Hexadecimal %%x = %x\n",16);
- fprintf(Handle,"Octal %%o = %o\n",16);
- fprintf(Handle,"Chaine de caracteres %%s = %s\n","message");
- fprintf(Handle,"Reel %%f = %f\n",123.45);
- fprintf(Handle,"Reel %%f = %.2f\n",123.45);
- fclose(Handle);
- }
- return 0;
- }
on obtiendra le résultat suivant dans le fichier «monfichier.txt» :
Boujour!Entier %i = 15
Hexadecimal %x = 10
Octal %o = 20
Chaine de caracteres %s = message
Reel %f = 123.450000
Reel %f = 123.45
Voir également
Langage de programmation - C++ - Référence de procédures et fonctions - fscanf
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 - fputc
Langage de programmation - C++ - Référence de procédures et fonctions - fputs
Langage de programmation - C++ - Référence de procédures et fonctions - printf
Langage de programmation - C++ - Référence de procédures et fonctions - fgets
Langage de programmation - C - Référence de procédures et fonctions - fprintf
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 109.