• Lunes 29 de Abril de 2024, 07:09

Autor Tema:  Xor  (Leído 1337 veces)

javier.egea

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Xor
« en: Lunes 4 de Septiembre de 2006, 09:51 »
0
hola a todos,
tengo una funcion en que, pasados dos char* necesito hacer XOR de bytes de ambos y retornar un char* con el resultado.
Alguien me puede decir que error existe en este codigo que uso??

const char* xorData(char* cadena1, char* cadena2)
{
   int longit;
   int i;
   char *c1,*c2,*result=NULL;

   c1=cadena1;
   c2=cadena2;
   
   if (strlen(c1)>strlen(c2)) longit= strlen(c2);
   else longit=strlen(c1);

   for (i=0;i<longit;i++)
   {
      printf("las letras son: %c y %c",c1,c2);
      result=c1^c2;
      printf("las letras son: %c",result);
   }
   
   return result;
}

Gracias

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Xor
« Respuesta #1 en: Lunes 4 de Septiembre de 2006, 19:44 »
0
Te falta reservar memoria para la variable result.

Una vez que obtienes la longitud menor, debieras hacer algo como esto:

Código: Text
  1.  
  2. result = ( char* ) malloc( longit * sizeof( char ) );
  3. // o esto:
  4. // result = ( char* ) calloc( longit, sizeof( char ) );
  5.  
  6.  

Nota: el operador sizeof no es necesario, pues en este caso siempre devolverá 1, es sólo mi costumbre de utilizarlo :D.

Código: Text
  1.  
  2. result = ( char* ) malloc( longit );
  3. // o
  4. // result = ( char* ) calloc( longit, 1 );
  5.  
  6.  

Saludos,
JJ (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

javier.egea

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Xor
« Respuesta #2 en: Martes 5 de Septiembre de 2006, 09:29 »
0
Muchas gracias,
efectivamente era eso lo que me faltaba...