12.4.2 Lecture formatée dans une chaîne avec sscanf (utilité : ***)
Quand on dispose d'une phrase lue par gets, on peut y lire des informations par la fonction sscanf. Elle fonctionne exactement comme scanf, sauf que le "flux d'entrée" est une chaîne de caractères au lieu d'être le tampon du Langage C.
Pour pouvoir utiliser sscanf dans de bonnes conditions (sans rendre la lecture difficile, comme ci-dessous), il faut s’imposer un format bien choisi (simple) pour les données à lire.
nb_val_lues = sscanf( phrase, "%s%hd%*s%lf", nom, &age, &salaire) ; // %*s sert à sauter « ans »
Le code %*s permet de "sauter" un mot non significatif qu'on ne souhaite pas mémoriser (on l’utilise pour Voici un exemple de format mal choisi : la chaîne phrase est de la forme "Sophie (20 ans) gagne 1000.00 E par mois" ou "Max (30 ans) gagne 1650.00 E par mois". Ce format contient trop de caractères inutiles et il est difficile à lire. Il faut en effet écrire :
On peut aussi utiliser le code %*s qui permet de "sauter" un mot non significatif :
La manipulation de sscanf, comme celle de scanf, est délicate. En particulier, tout caractère qui figure dans les guillemets en compagnie des codes formats (%xx) doit impérativement figurer dans la chaîne à lire. Dans notre exemple, le texte entre %s et %hd (espace puis parenthèses) doit figurer tel qu’il est écrit dans la chaîne à lire. |