[résolu] problème de débutant

problème de débutant [résolu] - C - Programmation

Marsh Posté le 07-05-2009 à 22:06:53    

bonjour, quelq'un peut me dire ce qui ne va pas dans le code suivant :
 
char * value = NULL;
char * action ="150=2";
int actionId,i,t=0;
 
i = strcspn (action,"=" );
value = &action[i+1];
action[i]='\0';
actionId = sscanf( action, "%u", &t);
 
j'arrive bien a récupérer le 2eme membre dans un pointeur, mais dès que je veux transformer le deuxième membre (qui est aussi un pointeur, valide apparement) en int, ca plante.
 
je ne peux pas vous donner de message d'erreur vu que c'est sur un micro controleur, par contre le prog compile sans erreur
 
 
merci.
++


Message édité par t0t0l le 08-05-2009 à 00:01:03
Reply

Marsh Posté le 07-05-2009 à 22:06:53   

Reply

Marsh Posté le 07-05-2009 à 22:46:27    

Ouais, je dirais que ton erreur vient du fait que tu tentes de modifier une chaine statique. Sur un x86, tu auras un segfault direct.
 
D'un autre coté, si tu veux juste récupérer le premier entier (ou éventuellement le second), utilise un code du genre :
 

Code :
  1. if (sscanf(action, "%u=%u", &t, &i) >= 1)
  2. {
  3.     /* Bla bla */
  4. }


Voilà, pas besoin de modifier la chaine. Ça présuppose que le libc fourni avec le microcontrolleur soit pas trop pourrie quand même.


Message édité par tpierron le 07-05-2009 à 22:47:12
Reply

Marsh Posté le 08-05-2009 à 00:00:37    

impeccable,  ca fonctionne nickel ;)
 
merci!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed