Problème avec des chaînes en hexa - C - Programmation
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
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.
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.
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.