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 :

sscanf et float


Sujet :

C

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut sscanf et float
    Bonjour,

    J'ai une structure de données fort simple (MAX_TAG_NAME vaut 129):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    typedef struct data_ubisense {
      char tag_name[MAX_TAG_NAME];
      float x, y, z;
    } t_tag;
    Je voudrais lire les valeurs de cette structure depuis une chaîne de caractère (que je reçois depuis le réseau). Par exemple, je reçois la chaîne:
    tag120,-4.851211e+000,-3.674010e+000,-5.420017e-001

    J'utilise le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sscanf((char *)buffer, "%[a-zA-Z0-9-_]c,%g,%g,%g", (received_tag.tag_name), &(received_tag.x), &(received_tag.y), &(received_tag.z));
    Avec ce code, je réussi à lire tag_name mais en revanche, les champs x, y et z ne sont pas lus. Le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fprintf(stderr, "Received tag: %s (%zd),%f,%f,%f\n", received_tag.tag_name, strlen(received_tag.tag_name), received_tag.x, received_tag.y, received_tag.z);
    affiche: "Received tag: tag120 (6),0.000000,0.000000,0.000000".

    Je me suis déjà plongé dans la page de man de sscanf pour lire le tag_name mais là, j'ai beau essayé, je n'arrive pas à lire les float.

    Une idée?

    J'utilise Ubuntu 9.10. La locale est "en_US.UTF-8".

    D'avance 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(buffer, "%[a-zA-Z0-9-_],%g,%g,%g", (received_tag.tag_name), &(received_tag.x), &(received_tag.y), &(received_tag.z));
    (pas de c dans le format, le format [] désigne déjà comme cible une chaine de caractères)
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup, ça marche parfaitement maintenant!!

    C'était la première fois que j'utilisais [] dans sscanf. Au demeurant c'est très pratique!

    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pb de formatage de champs de type float
    Par FrankyNormand dans le forum XMLRAD
    Réponses: 9
    Dernier message: 05/05/2005, 12h37
  2. Réponses: 4
    Dernier message: 12/09/2003, 11h38
  3. problème de float sur SQL server 2000.
    Par fidji dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 24/07/2003, 14h15
  4. [7RC3] Formatage de champs float
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 2
    Dernier message: 19/05/2003, 09h38
  5. probleme d'insertion d'un Float
    Par neness dans le forum Débuter
    Réponses: 3
    Dernier message: 07/01/2003, 12h32

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