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

[SOLUCIONADO] Concatenar punteros char

Estas en el tema de Concatenar punteros char en el foro de C/C++ en Foros del Web. Hola a todos necesito ayuda con un algoritmo que estoy pensando desarrollar, el problema es que necesito concatenar dos punteros char por ejemplo, tengo char ...
  #1 (permalink)  
Antiguo 27/10/2014, 21:41
 
Fecha de Ingreso: febrero-2014
Mensajes: 107
Antigüedad: 10 años, 1 mes
Puntos: 0
Concatenar punteros char

Hola a todos necesito ayuda con un algoritmo que estoy pensando desarrollar, el problema es que necesito concatenar dos punteros char por ejemplo, tengo

char *p="b";
char *r="a";

char *re;

concatenar p y r (y dejarlo guardado en la variable re; re="ba")

tengo el siguiente codigo mi idea es descomponer una cadena en una lista doblemente enlazada guardando cada caracter en un nodo, cosa que ya lo pude hacer, pero necesito en algun punto descomponer la lista y concatenar los nodos en un nodo que no quiero destruir y los demas destruirlos. Lo unico que quiero saber es como concatenar punteros de caracteres.

Código C++:
Ver original
  1. #include <iostream>
  2. #include <conio.h>
  3. #define ENTER '\n'
  4. using namespace std;
  5.  
  6.  
  7. struct nodo{
  8.  
  9. char *info;
  10.  
  11. struct nodo *sig;
  12. struct nodo *ant;
  13.  
  14. };
  15.  
  16.  
  17.  
  18.  
  19. int main(){
  20. int cont=1,temp,sum=0;
  21. struct nodo *cab,*p,*q;
  22. char desea;
  23. char cad;
  24. //cin.getline(cad,30);//cout<<sizeof(cad);getch();}
  25. //cout<<cad;
  26.  
  27. do{
  28.  if(cont==1){
  29.     cad=getchar();
  30.     if(cad>='a' && cad<='z'){
  31.        p=new struct nodo;
  32.        p->info=&cad;
  33.        cab=p;
  34.        p->sig=NULL;
  35.        p->ant=NULL;
  36.     }
  37.  }
  38. else{
  39.   cad=getchar();
  40.   if(cad>='a' && cad<='z'){
  41.   q=new struct nodo;
  42.   p->sig=q;
  43.   q->ant=p;
  44.   p=q;
  45.   p->info=&cad;
  46.  }
  47.  
  48.  }
  49.   cont=0;
  50.   cout<<cad;
  51.   //if(cad==13)
  52.   //             break;
  53.  }while(cad!=ENTER);
  54.  
  55.  p->sig=NULL;
  56.  
  57.  q=cab;
  58.  
  59.  
  60.  getch();
  61.  }
  #2 (permalink)  
Antiguo 28/10/2014, 00:11
Avatar de leosansan  
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 11 años, 10 meses
Puntos: 49
Respuesta: Concatenar punteros char

Cita:
Iniciado por shikamarucb Ver Mensaje
...........el problema es que necesito concatenar dos punteros char por ejemplo, tengo

char *p="b";
char *r="a";
char *re;

concatenar p y r (y dejarlo guardado en la variable re; re="ba")

.......................................
Pues "concaténalos: "

Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. int main ( void ) {
  6.   char *c1 ="a";
  7.   char *c2 ="b";
  8.   char *re = calloc ( 3 , 1 ) ;
  9.   *re = *c2;
  10.   *( re + 1 ) = *c1 ;
  11.   printf ( "r = %s\n",  re ) ;
  12.   free( re ) ;
  13.   return 0 ;
  14. }

¡¡¡Saluditos!!!


Última edición por leosansan; 28/10/2014 a las 00:30
  #3 (permalink)  
Antiguo 28/10/2014, 03:03
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Concatenar punteros char

Cita:
Iniciado por leosansan Ver Mensaje
Pues "concaténalos: "
¿No te gusta strcat? :P
  #4 (permalink)  
Antiguo 28/10/2014, 06:01
Avatar de leosansan  
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 11 años, 10 meses
Puntos: 49
Respuesta: Concatenar punteros char

Cita:
Iniciado por eferion Ver Mensaje
¿No te gusta strcat? :P
Creí que iba de punteros.

¡¡¡Saluditos!!!

  #5 (permalink)  
Antiguo 28/10/2014, 06:42
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Concatenar punteros char

Si partimos de la base que los strings en C son punteros de tipo char... siempre será cosa de punteros jejejeje

Ahora, que yo creo que lo que busca es concatenar strings en C. Particularizar la situación para strings de longitud 1 creo que puede ser confuso.
  #6 (permalink)  
Antiguo 28/10/2014, 06:49
lareto
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Concatenar punteros char

Cita:
Iniciado por leosansan Ver Mensaje
Pues "concaténalos: "

Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. int main ( void ) {
  6.   char *c1 ="a";
  7.   char *c2 ="b";
  8.   char *re = calloc ( 3 , 1 ) ;
  9.   *re = *c2;
  10.   *( re + 1 ) = *c1 ;
  11.   printf ( "r = %s\n",  re ) ;
  12.   free( re ) ;
  13.   return 0 ;
  14. }
Hola; buenos días (al menos por acá, que son las diez menos cuarto)

Un comentario:
al hacer
Código:
  *re = *c2;
  *( re + 1 ) = *c1 ;
sólo está copiando el primer carácter de c2 y, luego, el primer carácter de c1, que en este ejemplo funciona porque sólo interesan esos dos, pero no es "concatenar punteros a char".

lareto :)
  #7 (permalink)  
Antiguo 28/10/2014, 08:58
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Concatenar punteros char

Aqui va mi superconcatenator de cadenas

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main(){
  6.   int i = 0;
  7.   const char *str1 = "Esto es un test ";
  8.   const char *str2 = "de concatenacion";
  9.  
  10.   char *str3 = malloc(strlen(str1) + strlen(str2) + 1);
  11.  
  12.   while(*str1){
  13.       str3[i++]=*str1++;
  14.   }
  15.   while(*str2){
  16.       str3[i++]=*str2++;
  17.   }
  18.   str3[i]='\0';
  19.  
  20.   printf("%s\n", str3);
  21.  
  22.   free(str3);
  23.  
  24.   return 0;
  25. }
__________________
If to err is human, then programmers are the most human of us
  #8 (permalink)  
Antiguo 28/10/2014, 09:30
Avatar de leosansan  
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 11 años, 10 meses
Puntos: 49
Respuesta: Concatenar punteros char

Cita:
Iniciado por Profesor_Falken Ver Mensaje
Aqui va mi superconcatenator de cadenas
Y yo "erre que erre" con usar punteros y aritmética de punteros, más que nada para que exista otro punto de vista....y sin usar la librería string.h :

Código C++:
Ver original
  1. include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main ( void ) {
  5.   int i = 0 , strlen_c1 , strlen_c2 ;;
  6.   char *p , *c1 = "Hola " , *c2 = " mundo!"  , *str1 = c1 , *str2 = c2 ;
  7.   for ( strlen_c1 = 0 , p = c1 ; *p != '\0' ; strlen_c1++ , p++ ) ;
  8.   for ( strlen_c2 = 0 , p = c2 ; *p != '\0' ; strlen_c2++ , p++ ) ;
  9.   char *re = calloc ( strlen_c1 + strlen_c2 + 1 , 1 ) ;
  10.   while ( *str1 )
  11.     *( re + i++ ) = *str1++ ;
  12.   while ( *str2 )
  13.     *( re + i++ ) = *str2++ ;
  14.   printf("%s  \"+\"  %s ==> [ %s ]\n" , c1 , c2 , re ) ;
  15.   free(re);
  16.   return 0;
  17. }

¡¡¡Saluditos!!!

  #9 (permalink)  
Antiguo 28/10/2014, 09:43
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Concatenar punteros char

Cita:
Iniciado por leosansan Ver Mensaje
Y yo "erre que erre" con usar punteros y aritmética de punteros, más que nada para que exista otro punto de vista....y sin usar la librería string.h :
Si le agregas alguna macro redondeas la jugada jejejeje
  #10 (permalink)  
Antiguo 28/10/2014, 11:56
Avatar de leosansan  
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 11 años, 10 meses
Puntos: 49
Respuesta: Concatenar punteros char

Cita:
Iniciado por eferion Ver Mensaje
Si le agregas alguna macro redondeas la jugada jejejeje
Después de ver lo que hiciste la última vez ni se me ocurre .

Pero una pequeña variante inspirada por el amigo rir con aritmética de punteros "indirecta":

Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main ( void ) {
  5.    char *c1 = "Hola" , *c2 = " mundo!" , *p , *q ;
  6.    int strlen ;
  7.    for ( strlen = 0 , p = c1 ; *p != '\0' ; strlen++ , p++ ) ;
  8.    for ( p = c2 ; *p != '\0' ; strlen++ , p++ ) ;
  9.    char *re = calloc ( strlen , 1 ) ;
  10.    for ( p = re , q = c1 ; ( *p = *q ) != '\0' ; p++ , q++ ) ;
  11.    for ( q = c2 ; ( *p = *q ) != '\0' ; p++ , q++ ) ;
  12.    printf("%s  \"+\"  %s ==> [ %s ]\n" , c1 , c2 , re ) ;
  13.    free ( re ) ;
  14.    return 0 ;
  15. }

¡¡¡Saluditos!!!

  #11 (permalink)  
Antiguo 29/10/2014, 21:56
 
Fecha de Ingreso: febrero-2014
Mensajes: 107
Antigüedad: 10 años, 1 mes
Puntos: 0
De acuerdo Respuesta: Concatenar punteros char

Mushisimas gracias a todos por su respuestas me han sido de gran ayuda, he terminado mi algoritmo y he aprendido algo mas que es lo importante Gracias!

Etiquetas: caracteres, concatenar, punteros
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 23:58.