Section courante

A propos

Section administrative du site

SSCANF

Chaine de recherche formaté
Langage C stdio.h

Syntaxe

int sscanf(const char *tampon,const *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

Description

Cette fonction permet la lecture de texte suivant un certain format à partir d'un tampon.

Algorithme

MODULE SSCANF(str, format, ...)
   * Initialiser un compteur pour le nombre de valeurs extraites
   values_extracted ← 0

   * Parcourir la chaîne de caractères 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 depuis str
               target ← next_argument_as_pointer()
               SI parse_integer(str, target) ALORS
                  values_extracted ← values_extracted + 1
               SINON
                  * Arrêter en cas d'erreur
                  break
               FIN SI
            'f':
               * Lire un flottant depuis str
               target ← next_argument_as_pointer()
               SI parse_float(str, target) ALORS
                  values_extracted ← values_extracted + 1
               SINON
                  * Arrêter en cas d'erreur
                  break
               FIN SI
            's':
               * Lire une chaîne de caractères
               target ← next_argument_as_pointer()
               SI parse_string(str, target) ALORS
                  values_extracted ← values_extracted + 1
               SINON
                  * Arrêter en cas d'erreur
                  break
               FIN SI
            AUTREMENT
               * Gérer d'autres spécificateurs si nécessaire
               * (par exemple, %c, %x, etc.)
         FIN EVALUER CAS
      SINON
         * Ignorer les caractères fixes dans le format
         SI ↑str ≠ format[i] ALORS
            * Erreur de correspondance
            break
         FIN SI
         str ← str + 1
      FIN SI
      i ← i + 1
   FIN BOUCLE TANT QUE

   * Retourner le nombre de valeurs extraites avec succès
   RETOURNE values_extracted

Remarques

Exemple

Voici un exemple permettant d'extraire trois valeurs d'une chaine de caractères :

Essayer maintenant !
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.     int N1,N2;
  7.     char S1[255];
  8.     sscanf("7,4,Bonjour","%i,%i,%s",&N1,&N2,&S1);
  9.     printf("N1 = %i\n",N1);
  10.     printf("N2 = %i\n",N2);
  11.     printf("S1 = %s\n",S1);
  12.     return 0;
  13. }
  14.  

on obtiendra le résultat suivant :

N1 = 7
N2 = 4
S1 = Bonjour

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

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

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