SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: cremix en Sábado 13 de Junio de 2009, 13:02

Título: Arrays con basura
Publicado por: cremix en Sábado 13 de Junio de 2009, 13:02
Hola:

No sé porqué razón defino los arrays con un tamaño determinado y cuando los imprimo por pantalla me salen con basura. Estoy haciendo una función llamada append que me una cadenas (por cierto, ¿sabéis si ya existe una?). Aquí os enseño el código:

Código: C++
  1.  
  2. char s1[5] = "abcd";
  3. char s2[5] = "efgh";
  4.  
  5. char *a;
  6.  
  7. a = append(s1,s2);
  8. cout << a << endl;
  9.  
  10.  
  11. char* append(char *cadena1,char *cadena2)
  12. {
  13.     int size=0,size1=0,i=0;
  14.  
  15.         //Obtengo lo que mediría la nueva cadena
  16.     while(cadena1[i]!='')
  17.     {
  18.         size1++;
  19.         i++;
  20.     }
  21.    
  22.     i=0;
  23.  
  24.     while(cadena2[i]!='')
  25.     {
  26.         size++;
  27.         i++;
  28.     }
  29.  
  30.     size += size1;
  31.  
  32.        //creo el nuevo array
  33.     char *res = new char[size];
  34.         //lo inicializo
  35.     for(int i=0;i<size1;i++)
  36.         res[i] = cadena1[i];
  37.    
  38.  
  39.     for(int i=size1;i<size;i++)
  40.         res[i] = cadena2[i-size1];
  41.  
  42.     return res;
  43. }
  44.  
  45.  
  46.  

¿Alguien puede decirme por qué pasa?

Un saludo
Título: Re: Arrays con basura
Publicado por: F_Tanori en Sábado 13 de Junio de 2009, 15:29
Hay una funcion que se llama strcat

http://es.wikipedia.org/wiki/Strcat (http://es.wikipedia.org/wiki/Strcat" onclick="window.open(this.href);return false;)
http://c.conclase.net/librerias/funcion.php?fun=strncat (http://c.conclase.net/librerias/funcion.php?fun=strncat" onclick="window.open(this.href);return false;)


La haz probado?

Saludos
Título: Re: Arrays con basura
Publicado por: Eternal Idol en Sábado 13 de Junio de 2009, 16:13
¿Estas poniendo el cero terminador? El tamaño en bytes de la cadena tiene que ser el numero de caracteres de las dos cadenas mas uno (el cero terminador que va justo al final).
Título: Re: Arrays con basura
Publicado por: cremix en Sábado 13 de Junio de 2009, 16:26
Era eso. Tenía que ponerle el ''. Menudo despiste. Muchísimas gracias.
Un saludo
Título: Re: Arrays con basura
Publicado por: Eternal Idol en Sábado 13 de Junio de 2009, 16:33
De nadas  B)