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 :

Explication sur une condition "if" employant "sscanf"


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 46
    Par défaut Explication sur une condition "if" employant "sscanf"
    bonjour à tous,

    je débute en C et je souhaiterai avoir des informations sur ce que fait ce test

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (sscanf(champ, "%s %n", val, &i) != 1)
    Merci

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut man sscanf?
    sscanf retourne le nombre d'éléments correctement assignés (ici: val et &i).

    Intuitivement lorsque çà se passe "bien" çà devrait retourner 2 mais %n est une conversion particulière qui ne convertit rien et n'est pas supposé incrémenter le retour de sscanf.
    -W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    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 : 48
    Localisation : Suisse

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Le spécificateur de format %n place le nombre de caractères lus par scanf() dans la variable (de type int) située à l'adresse &i. sscanf() renvoie ici 1 si la chaine a été saisie "correctement" (pour autant qu'il soit correct de saisir une chaine de caractères avec le spécificateur %s) et stockée dans le tableau de caractères situé à l'adresse val .

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Info_76 Voir le message
    je débute en C et je souhaiterai avoir des informations sur ce que fait ce test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (sscanf(champ, "%s %n", val, &i) != 1)
    Le mieux à faire est de lire la doc de la fonction.

    http://www.opengroup.org/onlinepubs/...ns/fscanf.html

    notamment ce qui concerne "%n" et la valeur retournée. Pose des questions si tu ne comprends pas la doc.

  5. #5
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Le mieux à faire est de lire la doc de la fonction.

    http://www.opengroup.org/onlinepubs/...ns/fscanf.html
    ça ne te ressemble pas Emmanuel de donner des liens qui pointe vers des extensions du langage C. La vrai doc est ici : http://www.open-std.org/jtc1/sc22/wg...docs/n1256.pdf
    Le lien fourni par Emmanuel détaille la fonction fscanf suivant la norme POSIX, on remarquera en l'occurrence l'extension "%n$" servant à désigner un argument en particuliers.

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    ça ne te ressemble pas Emmanuel de donner des liens qui pointe vers des extensions du langage C. La vrai doc est ici : http://www.open-std.org/jtc1/sc22/wg...docs/n1256.pdf
    Le lien fourni par Emmanuel détaille la fonction fscanf suivant la norme POSIX, on remarquera en l'occurrence l'extension "%n$" servant à désigner un argument en particuliers.
    Oui, mais les extensions sont clairement repérées. Le reste est du C très respectueux de la norme.

    Le site de l'OpenGroup est un des mieux documentés en ce qui concerne les fonctions du C, tout en restant accessible.

Discussions similaires

  1. [Requête] Explication sur une condition dans une Requête
    Par jimmymatrix dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 14/05/2007, 14h34
  2. Question sur une condition d'un exemple de la FAQ
    Par Bleys dans le forum Delphi
    Réponses: 3
    Dernier message: 08/08/2006, 12h43
  3. problème sur une condition if
    Par boss_gama dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 19/07/2006, 12h04
  4. Explication sur une instruction...
    Par snoop dans le forum C++
    Réponses: 5
    Dernier message: 03/05/2006, 22h56
  5. [JFrame] Explication sur une différence de comportement
    Par jems dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 06/07/2005, 09h23

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