SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: javier.egea en Lunes 4 de Septiembre de 2006, 09:51

Título: Xor
Publicado por: javier.egea en Lunes 4 de Septiembre de 2006, 09:51
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
Título: Re: Xor
Publicado por: Geo en Lunes 4 de Septiembre de 2006, 19:44
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).
Título: Re: Xor
Publicado por: javier.egea en Martes 5 de Septiembre de 2006, 09:29
Muchas gracias,
efectivamente era eso lo que me faltaba...