elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 21:26  


Tema destacado: Grupo de Facebook de elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  unir cadenas mediante punteros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: unir cadenas mediante punteros  (Leído 596 veces)
;c1v!c

Desconectado Desconectado

Mensajes: 139


Forma parte de esta comunidad gamer!!!


Ver Perfil WWW
unir cadenas mediante punteros
« en: 3 Noviembre 2011, 18:55 »

me ayudan a unir cadenas mediante punteros sin utilizar ninguna funcion de librerias, en codigo no hice mucho...

codigo:
Código
void reverse(char *punt,char *puntt)
{
  int largo1=0;int largo2=0;int lg=0;
while(*punt!='\0')
{
punt++;
largo1++;
}
while(*puntt!='\0')
{
puntt++;
largo2++;
}
   lg=largo1+largo2;
char largos[lg];
for(?¿?¿?¿?)
{
   ?¿?¿?
}
}





En línea

satu

Desconectado Desconectado

Mensajes: 263

Siempre aprendiendo


Ver Perfil WWW
Re: unir cadenas mediante punteros
« Respuesta #1 en: 3 Noviembre 2011, 20:12 »

Hola

No se si funcionará pero sería una idea:
Código
void reverse(char *punt,char *puntt)
{
   int largo1=0, largo2=0, lg=0, i;
   char *aux = punt, *aux2 = puntt;
   while(*punt!='\0')
       {
       punt++;
       largo1++;
       }
   while(*puntt!='\0')
       {
       puntt++;
       largo2++;
       }
   lg=largo1+largo2;
   char largos[lg];
 
   for(i=0; i<largo1; i++)
       {
       largos[i] = *aux;
       aux++;
       }
   for(; i<lg; i++)
       {
       largos[i] = *aux2;
       aux2++;
       }
}
 

Saludos


En línea

Breakbeat como forma de vida
;c1v!c

Desconectado Desconectado

Mensajes: 139


Forma parte de esta comunidad gamer!!!


Ver Perfil WWW
Re: unir cadenas mediante punteros
« Respuesta #2 en: 3 Noviembre 2011, 20:26 »

si funciona pero me salen unos simbolos raros en la consola jejeje.
        Ingrese cadena:MAR
   Ingrese cadena:TIN
   [MARTINg����]
y me sale un "g" nada q ver.
supongo que sera por el tamaño de cada cadena.



Código
#include <stdio.h>
#include <stdlib.h>
 
void reverse(char *punt,char *puntt);
 
int main()
{
char cade1[5];
char cade2[5];
char *punt;char *puntt;
printf("\tIngrese cadena:");
gets(cade1);
printf("\tIngrese cadena:");
gets(cade2);
 
punt=&cade1[5];
puntt=&cade2[5];
 
reverse(cade1,cade2);
 
return 0;
}
//-----funcion unir caracteres------//
void reverse(char *punt,char *puntt)
{
char *aux = punt, *aux2 = puntt;
int largo1=0;int largo2=0;int lg=0;
while(*punt!='\0')
{
punt++;
largo1++;
}
while(*puntt!='\0')
{
puntt++;
largo2++;
}
   lg=largo1+largo2;
char largos[lg];int i=0;
for(i=0; i<largo1; i++)
       {
       largos[i] = *aux;
       aux++;
       }
   for(; i<lg; i++)
       {
       largos[i] = *aux2;
       aux2++;
       }
printf("\t[%s]\n",largos);
 
}
En línea

.::DoX::.

Desconectado Desconectado

Mensajes: 4



Ver Perfil
Re: unir cadenas mediante punteros
« Respuesta #3 en: 3 Noviembre 2011, 20:38 »

Citar
si funciona pero me salen unos simbolos raros en la consola jejeje.
        Ingrese cadena:MAR
   Ingrese cadena:TIN
   [MARTINg����]

Tienes que agregarle el caracter nulo a la cadena.

Código
lg=largo1+largo2;
char largos[lg];int i=0;

Segun recordaba no se puede inicializar variables de esa forma con una variable como indice, por lo menos a mi en mi IDE no me lo permite.

Hace un tiempo hice una funcion para unir cadenas mucho mas pequeña:

Código
int main()
{
 
char s1[23] = "Hola como le va ";
char s2[6] = "Mundo";
 
_strcat(s1, s2);
printf("%s", s1);
 
getchar();
return 0;
}
 
void _strcat(char* str1, char* str2)
{
while(*str1)
*str1++ = *str1;
while(*str2)
*str1++ = *str2++;
*str1 = '\0';
}

El resultado se guarda en str1  :P.
En línea
;c1v!c

Desconectado Desconectado

Mensajes: 139


Forma parte de esta comunidad gamer!!!


Ver Perfil WWW
Re: unir cadenas mediante punteros
« Respuesta #4 en: 3 Noviembre 2011, 20:55 »

jajjajaja lo que nunca me deja de sorprender es como se puede llegar a los mismos
resultados de diferentes formas jejeje.

obvio q la tuya es mucho mejor q la mía, ojala algún día pueda pensar como un verdadero programador y resolver mas rápido y eficaz los problemas.

gracias!
En línea

rir3760


Desconectado Desconectado

Mensajes: 382


Ver Perfil
Re: unir cadenas mediante punteros
« Respuesta #5 en: 4 Noviembre 2011, 02:05 »

Cuando se copia una cadena al final de otra como en el ejemplo de .::DoX::. hay dos detalles a tener en cuenta. La linea en cuestión es:
Código
*str1++ = *str1;

El primero es que no es necesario copiar la cadena en si misma.

El segundo y mas pesado es el uso de "str1++" y "str1" en una expresión. Ese si es un dolor de cabeza ya que dependiendo del orden en que ellas se evalúen (y cuando aplique el efecto lateral) se pueden obtener diferentes resultados.

Por ello mejor ir con:
Código
void strcat(char *s, char *t)
{
   while (*s != '\0')
       s++;
 
   while ((*s++ = *t++) != '\0')
       ;
}

Un saludo
En línea

The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
do-while


Desconectado Desconectado

Mensajes: 604


Cuando me afeito, recuerdo porque me dejo barba.


Ver Perfil
Re: unir cadenas mediante punteros
« Respuesta #6 en: 4 Noviembre 2011, 06:10 »

¡Buenas!

Un problema que puede surgir al utilizar esos metodos es que se sobrepase la longitud de la cadena que almacena el resultado. Si no puedes utilizar funciones de libreria, por ejemplo para asignar una cadena que pueda tener la longitud total, puedes evitar el error indicando en la lista de parametros la longitud maxima de la cadena que contendra el resultado de la concatenacion, asi podras ir comprobando que no la sobrepasas, o si llegas al limite, dejar de añadir caracteres.

¡Saludos!
En línea

¡¡¡Feliz año nuevo!!!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Unir cadenas de texto
Programación C/C++
FaiF (A¥åHøRå) 7 1,158 Último mensaje 1 Agosto 2006, 17:22
por Casidiablo
problema al unir cadenas
Programación C/C++
_teiki 8 1,331 Último mensaje 27 Junio 2007, 21:01
por _teiki
Unir cadenas en C
Programación C/C++
Kropt32 10 3,650 Último mensaje 22 Noviembre 2008, 15:29
por agente_naranja
Duda con array de punteros a cadenas
Programación C/C++
Leo Gutiérrez. 2 1,730 Último mensaje 6 Diciembre 2009, 10:16
por nicolas_cof
cadenas y array con punteros
Programación C/C++
mapers 4 1,689 Último mensaje 29 Enero 2010, 00:46
por Leo Gutiérrez.
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines