IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Récupérer des données dans une chaine de caractère


Sujet :

C

  1. #1
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 46
    Points : 34
    Points
    34
    Par défaut Récupérer des données dans une chaine de caractère
    Bonjour à tous ,

    je suis débutant en c et je n'arrive pas à savoir ce que fais cette instruction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if( (pt!=NULL) && (sscanf(pt, "%*s %d %n", /*a,*/ &b, &c) == 1)
    		  )
    sachant que pt vaut : "REQ 90 1| 1500 | 7200 | 298 | 1500 | 0 | -1 | 29.9|");

    apperement b = 90 , mais je n'arrive pas à avoir la donnée 1 dans c est-ce normal ?


    Merci

  2. #2
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sscanf(pt, "%*s %d %n", /*a,*/ &b, &c) == 1
    Le premier élément du format %*s lit une chaîne de caractère mais ne la stocke pas (à cause de *)

    Le second %d lit un entier et le stocke à l'adresse mentionnée en premier argument (&b puisque a est mis en commentaire)

    Le troisième %n ne lit rien mais place à l'adresse mentionnée en second argument le nombre de caractères lus depuis le début du sscanf. (Je crois, mais sans en être sûr que cette valeur est indéfinie à cause de la présence de la suppression sur le premier élément du format)

    sscanf renvoie le nombre d'assignations effectuées à partir de pt. Si tout s'est bien passé, il doit donc renvoyer 1 (Le %s n'est pas assigné et le %n ne provient pas d'une conversion de données dans pt)

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Merci Diogène poour les explications.
    En conséquence, pour lire le 1, la requête devrait ressembler à quelque chose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sscanf(pt, "%*s %d %d", /*a,*/ &b, &c)
    Et sscanf devrait retourner 2.

  4. #4
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    Merci Diogène poour les explications.
    En conséquence, pour lire le 1, la requête devrait ressembler à quelque chose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sscanf(pt, "%*s %d %d", /*a,*/ &b, &c)
    Et sscanf devrait retourner 2.
    C'est ça!

    Thierry

Discussions similaires

  1. Réponses: 4
    Dernier message: 17/07/2008, 16h15
  2. [RegEx] comment récupérer un lien dans une chaine de caractère
    Par matonisuka dans le forum Langage
    Réponses: 4
    Dernier message: 25/05/2007, 15h36
  3. Réponses: 6
    Dernier message: 18/10/2006, 16h34
  4. [RegEx] Récupérer des données dans une page Web
    Par Pragmateek dans le forum Langage
    Réponses: 8
    Dernier message: 24/05/2006, 19h44
  5. Récupérer des données dans une page HTML
    Par newdelirium dans le forum Langage
    Réponses: 3
    Dernier message: 26/10/2005, 19h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo