passer un hexa comme char - C - Programmation
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.
Marsh Posté le 25-07-2006 à 23:03:38
yannsar a écrit : |
On est supposés deviner ton code ?
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);
}
}
Marsh Posté le 25-07-2006 à 23:10:23
ReplyMarsh Posté le 25-07-2006 à 23:25:27
yannsar a écrit :
|
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 ?
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
Marsh Posté le 25-07-2006 à 23:52:25
yannsar a écrit : en ajoutant ça : printf("%s",text); |
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...
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