Aide Sscanf
Résolu/Fermé
MaisClement
Messages postés
5
Date d'inscription
mardi 14 mai 2019
Statut
Membre
Dernière intervention
29 janvier 2020
-
14 mai 2019 à 16:03
MaisClement Messages postés 5 Date d'inscription mardi 14 mai 2019 Statut Membre Dernière intervention 29 janvier 2020 - 15 mai 2019 à 13:18
MaisClement Messages postés 5 Date d'inscription mardi 14 mai 2019 Statut Membre Dernière intervention 29 janvier 2020 - 15 mai 2019 à 13:18
1 réponse
Dalfab
Messages postés
706
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
2 novembre 2023
101
Modifié le 15 mai 2019 à 02:19
Modifié le 15 mai 2019 à 02:19
Bonjour
%s ça lit une séquence de caractère jusqu'au prochain espace ou équivalent. donc ici "%s(%s" va lire dans dest0 : "Dreux" et dans n1 : "Dreux)/20190513T181000/20190513T181000/"
et donc les formats suivants n'auront plus rien à lire.
Et c'est quoi ce type String?
Et ici il y a 2 noms de ville il faut récupérer lequel?
On pourrait écrire :
%s ça lit une séquence de caractère jusqu'au prochain espace ou équivalent. donc ici "%s(%s" va lire dans dest0 : "Dreux" et dans n1 : "Dreux)/20190513T181000/20190513T181000/"
et donc les formats suivants n'auront plus rien à lire.
Et c'est quoi ce type String?
Et ici il y a 2 noms de ville il faut récupérer lequel?
On pourrait écrire :
sscanf(s, "%[^(]%*[^)]%*[^T]T%2d%2d%*[^T]T%2d%2d" , dest0 , h0 , m0, hb0, mb0); // "%[^(]" va lire une chaîne tant qu'il n'y a pas '(' // "%*[^)]" va lire tant que pas ')' sans rien stocker // "%*[^T]" va lire tant que pas 'T' sans rien stocker // "T" s'attend à lire un T // "%2d" lit un entier sur exactement 2 chiffresAttention le nom de ville récupéré ici aura peut-être des espaces en trop au début et la fin, il faudrait les ôter.
Modifié le 15 mai 2019 à 10:03
Même si le reste de la description de chaîne n'est pas capturé, si le but n'est pas seulement de capturer les informations dont on a besoin, mais aussi de valider que le format de ce que l'on traite semble cohérent, on pourra alors décider quoi faire si les vérifications de cohérence ne passent pas (avertir l'utilisateur et tenter une capture dégradée, arrêter le programme, la source de données étant jugée suspecte,...).
Aussi, si sont des , comme dans les lignes postées par MaisClement, il faudra inclure en paramètre de l'adresse de ces variables pour que stocke le contenu dans l'espace mémoire alloué à la variable.
15 mai 2019 à 13:18
Dalfab, je n'avais effectivement pas compris le fonctionnement de %s