Problème avec des chaînes en hexa

Problème avec des chaînes en hexa - C - Programmation

Marsh Posté le 07-07-2008 à 12:20:58    

Bonjour,
 
j'ai un petit problème.
Je dois insérer une chaîne en hexa dans la base de registre à partir d'une constante définie (avec la fonction RegSetValueEx).
Je dois donc convertir cette chaine :
hex:4e,5b,00,3c
en :
\x4e\x5b\x00\x3c
 
Le problème, c'est que mon str_replace maison n'est pas d'accord sur le remplacement de , par \x car il n'y a pas de caractère hexa derrière. J'ai essayé avec \\x mais le résultat n'est plus bon. Comment pourrais-je procéder autrement ?
 
Auriez vous une idée ?
Merci de votre aide.
 
Guigui.

Reply

Marsh Posté le 07-07-2008 à 12:20:58   

Reply

Marsh Posté le 07-07-2008 à 13:09:26    

ton code

Reply

Marsh Posté le 07-07-2008 à 13:36:37    

#define KONFIGSTRING "hex:4e,56,43,52"
 
...
char * key = NULL;
key = (char*) malloc(strlen(KONFIGSTRING) * sizeof (char));
key = KONFIGSTRING;
//suppression du hex: initial
key = str_replace("hex:", "", key);
key = str_replace(",", "\x", key);
 
//la fonction replace
char *str_replace(char * t1, char * t2, char * t6)
{
     char*t4;
     char*t5= (char *)malloc( 0 );
 
     while(strstr(t6,t1))
        {
      t4=strstr(t6,t1);
      strncpy(t5+strlen(t5),t6,t4-t6);
      strcat(t5,t2);
      t4+=strlen(t1);
      t6=t4;
     }
     return strcat(t5,t4);
}
 
Merci de votre aide


Message édité par guigui94 le 07-07-2008 à 13:38:15
Reply

Marsh Posté le 07-07-2008 à 13:40:01    

ouah
 
t5 KO, rien alloué.
 
jolis noms de variables. ne t'étonnes pas que ça foire, c'est illisible.

Reply

Marsh Posté le 07-07-2008 à 13:46:39    

Sinon pour ce que tu veux faire ce n'est pas possible.
La construction de la chaine "\x" est réalisé lors de la compilation et elle est donc incorrecte.
Alors que ta fonction str_replace c'est lors de l'exécution qu'elle fait sont boulot, donc trop tard.
 
PS: Un début de piste, convertir chaque nombre en entier avec strtol(), puis générer une chaine avec les valeurs obtenues.


Message édité par Tarabiscote le 07-07-2008 à 13:51:48
Reply

Sujets relatifs:

Leave a Replay

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