Bonjour,
J'ai une structure de données fort simple (MAX_TAG_NAME vaut 129):
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:
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;
tag120,-4.851211e+000,-3.674010e+000,-5.420017e-001
J'utilise le code suivant:
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 sscanf((char *)buffer, "%[a-zA-Z0-9-_]c,%g,%g,%g", (received_tag.tag_name), &(received_tag.x), &(received_tag.y), &(received_tag.z));
affiche: "Received tag: tag120 (6),0.000000,0.000000,0.000000".
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);
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.
Partager