concatenacion de cadenas sin usar funciones

Iniciado por fernaEDLP, 2 Mayo 2019, 06:30 AM

0 Miembros y 1 Visitante están viendo este tema.

fernaEDLP

hola gente como les va?, necesito ayuda con el siguiente problema:
tengo que ingresar dos cadenas por teclado y copiar el contenido de la segunda al final de la primera es decir si en cad1 ingreso "hola", y en cad2 ingreso "mundo", al final debe quedarme en cad1 hola mundo, el código ya casi lo tengo hecho, pero hay algo que me falta o sea cuando termino de copiar los contenidos e imprimo cad1 me sale todo junto, o sea holamundo, y yo no quiero que salga así:
i
Código (c_mac) [Seleccionar]
nt main()
{
  char cad1[80],cad2[80];
  int i=0,j=0,k=0;
  printf("ingrese cad1\n");
  gets(cad1);
  fflush(stdin);
  printf("ingrese cad2 \n");
  gets(cad2);
  while(cad1[i]!='\0')
  {
      i++;

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

puts(cad1);
return 0;

}
se me había ocurrido, colocar en el mensaje printf("ingrese cad2 pero antes coloque un espacio"), pero no c quedaría muy croto pidiéndolo, graciass de antemano

animanegra

Si quieres que aparezca un espacio tienes que ponerlo tu, el ordenador no hace magia. Solo hace las acciones para las que las has programado.

A ver, en el primer while estas paseandote por la primera cadena buscando el final, y el en segundo estás paseandote por la segunda cadena pasando el contenido de cada caracter a partir de la posicion i donde te habías quedado. ¿Correcto?

¿Y si en lugar de empezar a pasar caracteres nada más que terminas de saber donde está el final de la primera string le añades un espacio?


cad1[i]=' '; // Añadimos el caracter espacio en el lugar donde encontraste el caracter '\0'
i++;          // Añadimos 1 al contador de posicion para no machacar el espacio que acabamos de poner.

42
No contesto mensajes por privado, si tienes alguna pregunta, consulta o petición plantéala en el foro para que se aproveche toda la comunidad.