Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Concatenar cadenas sin string.h

Estas en el tema de Concatenar cadenas sin string.h en el foro de C/C++ en Foros del Web. Hola. Estoy haciendo este ejercicio: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código C: Ver original /* 2.- Implemente una función concatena(s, t) que añada la cadena t al final ...
  #1 (permalink)  
Antiguo 06/04/2012, 12:29
 
Fecha de Ingreso: enero-2012
Mensajes: 68
Antigüedad: 12 años, 10 meses
Puntos: 0
Concatenar cadenas sin string.h

Hola.

Estoy haciendo este ejercicio:

Código C:
Ver original
  1. /* 2.- Implemente una función concatena(s, t) que añada la cadena t al final de la cadena s.
  2. Se supone que hay espacio suficiente para contener las dos cadenas. (Sin utilizar la
  3. librería string.h). */
  4.  
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7.  
  8. int longitud(char cadena[])
  9. {
  10.     int i;
  11.    
  12.     for(i=0;cadena[i]!='\0';i++);
  13.     return i;
  14. }
  15.  
  16. void concatena(char cadena1[], char cadena2[])
  17. {
  18.      int i,j,k;
  19.      k=0;
  20.      j=longitud(cadena1);
  21.      
  22.      
  23.      for(i=0;i<longitud(cadena2);i++){
  24.      
  25.    
  26.      cadena1[longitud(cadena1)+1+i] = cadena2[i]; //NO ME CONCATENA LAS CADENAS
  27.      
  28.      }
  29. }
  30.  
  31. int main()
  32. {
  33.     char cad1[20], cad2[20];
  34.    
  35.     printf("Introduzca la primera cadena: ");
  36.     gets(cad1);
  37.    
  38.     printf("Introduzca la segunda cadena: ");
  39.     gets(cad2);
  40.    
  41.     concatena(cad1, cad2);
  42.    
  43.     printf("La cadena concatenada es %s\n", cad1);
  44.    
  45.     system("pause");
  46.     return 0;
  47. }

Creo que no me concatena las cadenas por el \0 de la primera cadena, aunque no estoy seguro.

Gracias.

Saludos.
  #2 (permalink)  
Antiguo 06/04/2012, 12:46
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 11 meses
Puntos: 94
Respuesta: Concatenar cadenas sin string.h

Hola! si haces esto: j=longitud(cadena1); para que despues volves a sacar la longitud de la cadena1 con cadena1[longitud(cadena1)+1+i] = cadena2[i]; ???
Tenes que usar j como subindice de cadena1, y a medida que copia un caracter de cadena2 vas incrementando j, ejemplo:
Código C:
Ver original
  1. cadena1[j] = cadena2[i];
  2. j++;
Otra cosa la condicion del for no es la mas optima, lo que estas haciendo es llamar "n" veces a la funcion longitud, lo cual no es bueno; t conviene almcenar la longitud de cadena2 en una variable y listo(solo la llamas una vez). Ademas sino me equivoco deberia ser i<=longitud() ya q tenes que almacenar el '\0' de cad2

Saludos
  #3 (permalink)  
Antiguo 06/04/2012, 12:54
 
Fecha de Ingreso: enero-2012
Mensajes: 68
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Concatenar cadenas sin string.h

¡Muchísimas gracias! Ya lo he entendido.

Saludos.

Etiquetas: cadenas, concatenar, int, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:14.