Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: basuel en 18 Octubre 2012, 19:31 pm



Título: me come el ultimo caracter de la primer cadena
Publicado por: basuel en 18 Octubre 2012, 19:31 pm
alguien sabe xq me come el ultimo caracter de la primer cadena??


void strcat (char* cad1,char * cad2)
{
   int i=0;

   while(cad1!='\0')
   {
       i++;
   }
    int j=0;

    while(cad2[j]!='\0')
    {cad1=cad2[j];
        i++;
        j++;
    }

      cad1=cad2[j];
}


Título: Re: me come el ultimo caracter de la primer cadena
Publicado por: x64core en 18 Octubre 2012, 22:36 pm
alguien sabe xq me come el ultimo caracter de la primer cadena??


void strcat (char* cad1,char * cad2)
{
   int i=0;

   while(cad1!='\0')
   {
       i++;
   }
    int j=0;

    while(cad2[j]!='\0')
    {cad1=cad2[j];
        i++;
        j++;
    }

      cad1=cad2[j];
}

strcat une las string cad2 a cad1 al buffer destino eliminando el caracter nulo de lo contrario no formarian una sola cadena pero si quereis que no borre el
caracter nulo entonces agregar esta linea justo despues del primer bucle while:

Código:
i++;






Título: Re: me come el ultimo caracter de la primer cadena
Publicado por: rir3760 en 19 Octubre 2012, 01:08 am
Esa función realiza la operación (concatenación) de forma correcta. El error, si existe, debe encontrarse en otra parte del programa.

Se puede acortar utilizando punteros:
Código
  1. void strcat(char *p, char *q)
  2. {
  3.   while (*p != '\0')
  4.      p++;
  5.  
  6.   while ((*p++ = *q++) != '\0')
  7.      ;
  8. }

Un saludo