Section courante

A propos

Section administrative du site

SPRINTF

Chaine d'impression formaté
Langage C stdio.h

Syntaxe

int sprintf(char *tampon, const char *texte,...);

Paramètres

Nom Description
tampon Ce paramètre permet d'indiquer le tampon recevant les données
texte Ce paramètre permet d'indiquer le texte à écrire dans le tampon. 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.

Retour

Valeur Description
0 ou supérieur Ces valeurs permettent d'indiquer la longueur du tampon généré après le formatage.

Description

Cette fonction effectue l'écriture de texte selon un certain format à partir d'un tampon.

Algorithme

MODULE SPRINTF(Ref buffer, format, ...)
   * Initialiser un index pour écrire dans le buffer
   buffer_index ← 0

   * Parcourir la chaîne de format
   i ← 0
   BOUCLE TANT QUE format[i] ≠ '\0'
      SI format[i] = '%' ALORS
         * Détecter le caractère de format suivant
         i ← i + 1
         EVALUER CAS format[i]
            'd':
               * Lire un entier
               value ← next_argument_as_int()
               * Convertir l'entier en chaîne et l'ajouter au buffer
               buffer_index ← buffer_index + append_integer_to_buffer(buffer + buffer_index, value)
            'f':
               * Lire un nombre flottant
               value ← next_argument_as_double()
               * Convertir le flottant en chaîne et l'ajouter au buffer
               buffer_index ← buffer_index + append_float_to_buffer(buffer + buffer_index, value)
            's':
               * Lire une chaîne
               value = next_argument_as_string()
               * Copier la chaîne dans le buffer
               buffer_index ← buffer_index + append_string_to_buffer(buffer + buffer_index, value)
            AUTREMENT
               * Gérer d'autres formats ou caractères invalides
               buffer[buffer_index++] ← '%'
               buffer_index ← buffer_index + 1
               buffer[buffer_index++] ← format[i]
         FIN EVALUER CAS
      SINON
         * Copier un caractère non formaté directement dans le buffer
         buffer[buffer_index] ← format[i]
      buffer_index ← buffer_index + 1
      FIN SI
      i ← i + 1
   FIN BOUCLE TANT QUE

   * Ajouter le caractère nul de fin de chaîne
   buffer[buffer_index] ← '\0'

   * Retourner le nombre de caractères écrits
   RETOURNE buffer_index

Remarques

Exemples

Voici divers exemple d'affichages de format :

Essayer maintenant !
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.       char Temp[255];
  7.       sprintf(&Temp,"Boujour!");
  8.       puts(Temp);
  9.       sprintf(&Temp,"Entier %%i = %i",15);
  10.       puts(Temp);
  11.       sprintf(&Temp,"Hexadecimal %%x = %x",16);
  12.       puts(Temp);
  13.       sprintf(&Temp,"Octal %%o = %o",16);
  14.       puts(Temp);
  15.       sprintf(&Temp,"Chaine de caracteres %%s = %s","message");
  16.       puts(Temp);
  17.       sprintf(&Temp,"Reel %%f = %f",123.45);
  18.       puts(Temp);
  19.       sprintf(&Temp,"Reel %%f = %.2f",123.45);
  20.       puts(Temp);
  21.       return 0;
  22. }

on obtiendra le résultat suivant :

Boujour!
Entier %i = 15
Hexadecimal %x = 10
Octal %o = 20
Chaine de caracteres %s = message
Reel %f = 123.450000
Reel %f = 123.45

Voici divers exemple d'affichage de caractères à l'aide de leur code ASCII :

Essayer maintenant !
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.     char Temp[255];
  7.     sprintf(Temp,"%c",48);
  8.     puts(Temp);
  9.     sprintf(Temp,"%c",65);
  10.     puts(Temp);
  11.     sprintf(Temp,"%c",79);
  12.     puts(Temp);
  13.     sprintf(Temp,"%c",90);
  14.     puts(Temp);
  15.     return 0;
  16. }

on obtiendra le résultat suivant :

0
A
O
Z

Voir également

Langage de programmation - C - Référence de procédures et fonctions - fprintf
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 - sprintf

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 248.

Dernière mise à jour : Mardi, le 28 juillet 2015