passer un hexa comme char

passer un hexa comme char - C - Programmation

Marsh Posté le 25-07-2006 à 22:25:02    

Bonjour,
 
question tout bete :
 
j'ai un programme toto.exe pour lequel je dois lui passer un paramètre (string)
 
j'utilise une fonction strcpy pour copier mon param dans une variable.
 
tout marche nickel lorsque je passe un param "azerty" (string)
 
MAIS lorsque je passe un param hexa, ça marche plus ???
 
ex: toto.exe \x61
 
je souhaite qu'il m'affiche "a" ????
 
avez vous une idée ?
 
merci

Reply

Marsh Posté le 25-07-2006 à 22:25:02   

Reply

Marsh Posté le 25-07-2006 à 22:48:58    

je dirais que c'est parce qu'il te choppe la string "\x61" au lieu du char 0x61.


---------------
Töp of the plöp
Reply

Marsh Posté le 25-07-2006 à 23:03:38    

yannsar a écrit :


MAIS lorsque je passe un param hexa, ça marche plus ???
 
ex: toto.exe \x61
 
je souhaite qu'il m'affiche "a" ????


On est supposés deviner ton code ?


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 25-07-2006 à 23:07:22    

c'est exactement ça !!! il prend un string au lieu d'un char 0x61
 
mon code :
 
#include <stdio.h>
#include <string.h>
 
static void cpy_arg (const char *);
 
int main (int argc, char **argv)
{
   if (argc == 2)
   {
      cpy_arg (argv[1]);
      printf ("argv[1] copier\n" );
   }
   return 0;
}
 
static void cpy_arg (const char *s)
{
   if (s)
   {
      char text[20];
 
      strcpy (text, s);
   }
}

Reply

Marsh Posté le 25-07-2006 à 23:10:23    

donc il faut ... ?
 
(et édite en rajoutant des balises codes stp)


---------------
Töp of the plöp
Reply

Marsh Posté le 25-07-2006 à 23:25:27    

yannsar a écrit :


Code :
  1. static void cpy_arg (const char *s)
  2. {
  3.    if (s)
  4.    {
  5.       char text[20];
  6.       strcpy (text, s);
  7.    }
  8. }



OK, tu copies le paramètre dans une variable locale, et celle-ci est détruite en quittant la fonction. C'etait quoi le but ?
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 25-07-2006 à 23:43:35    

en ajoutant ça : printf("%s",text);
 
si je lance toto.exe abc\0x18\0x13\0x40
 
il me renvoie la chaine sans intrepréter le code hexa pour me remplacer le tout par des caracteres

Reply

Marsh Posté le 25-07-2006 à 23:52:25    

yannsar a écrit :

en ajoutant ça : printf("%s",text);
 
si je lance toto.exe abc\0x18\0x13\0x40
 
il me renvoie la chaine sans intrepréter le code hexa pour me remplacer le tout par des caracteres


Pourquoi ferait-il ça ? C'est le compilateur qui interprète les chaines en dur, pas le programme. Là, c'est une chaine connue à l'exécution, le compilateur n'est plus là. Le C n'est pas interprété.
 
Mais tu peux écrire du code qui interprète ça à l'exécution...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 26-07-2006 à 00:03:13    

capito !
 
merci

Reply

Sujets relatifs:

Leave a Replay

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