elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  como pasar variable de una a otra desde una funcion
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: como pasar variable de una a otra desde una funcion  (Leído 4,283 veces)
geshiro

Desconectado Desconectado

Mensajes: 178


Ver Perfil
como pasar variable de una a otra desde una funcion
« en: 21 Mayo 2016, 19:42 pm »

como puedo hacr que en mi funcion recursiva pase a mi variable str3 todo el valor de la funcion recursiva

Código
  1. #include <iostream>
  2. using namespace std;
  3. char str1[20],str2[20],str3[20];
  4. void myStrcat(char [],char []);
  5.  
  6. void myStrcat(char str1[],char str2[]){
  7. int c,d;
  8. c = 0;
  9.  
  10.   while(str1[c] != '\0') {
  11.      c++;  
  12.   }
  13.  
  14.   d = 0;
  15.  
  16.   while(str2[d] != '\0'){
  17.      str1[c] = str2[d];
  18.      d++;
  19.      c++;
  20.   }
  21.  
  22.   str1[c] = '\0';
  23. }
  24.  
  25.  
  26. int main(){
  27. cout << "Enter first string: " << endl;
  28. cin >> str1;
  29. cout << "Enter secound string: " << endl;
  30. cin >> str2;
  31. myStrcat(str1,str2);
  32. cout << "Result is " << str1 << endl;
  33. }
  34.  


En línea

HardForo

Desconectado Desconectado

Mensajes: 219


HardForo.com


Ver Perfil WWW
Re: como pasar variable de una a otra desde una funcion
« Respuesta #1 en: 21 Mayo 2016, 20:50 pm »

No veo ninguna funcion recursiva  :xD


En línea

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *
geshiro

Desconectado Desconectado

Mensajes: 178


Ver Perfil
Re: como pasar variable de una a otra desde una funcion
« Respuesta #2 en: 21 Mayo 2016, 22:52 pm »

 aqui esta me da error de Segmentation fault
Código
  1.   #include <iostream>
  2. using namespace std;
  3. void myStrcat(char [],char [],char []);
  4. char str1[20],str2[20],str3[20];
  5. void myStrcat(char str1[],char str2[], char str3[]){
  6. int c,d;
  7.     c = 0;
  8.  
  9. if((str1 != '\0') && (str2 != '\0')){
  10. str3 = str1;
  11. myStrcat(str1+1, str2, str3+1);
  12. }else if((str1 == '\0') && (str2 != '\0')){
  13. str3 = str2;
  14. myStrcat(str1+1, str2, str3+1);
  15. }
  16. str3[c] = '\0';
  17. }
  18.  
  19.  
  20. int main(){
  21. cout << "Enter first string: " << endl;
  22. cin >> str1;
  23. cout << "Enter secound string: " << endl;
  24. cin >> str2;
  25. myStrcat(str1,str2,str3);
  26. cout << "Result is " << str3 << endl;
  27. }
  28.  
En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.618


🏴 Libertad!!!!!


Ver Perfil WWW
Re: como pasar variable de una a otra desde una funcion
« Respuesta #3 en: 21 Mayo 2016, 22:55 pm »

Tu funcion tiene buffer overflow si lo que quieres es concatenar cadenas la funcion recursiva no te sirve..

Te recomiendo usar memset strlen y si acaso snprintf
En línea

Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: como pasar variable de una a otra desde una funcion
« Respuesta #4 en: 21 Mayo 2016, 22:55 pm »

tienes un par de problemas confusos

Código:
myStrcat(str1,str2,str3);

debería ser
Código:
yStrcat(&str1,&str2,&str3);
por ser array

Código:
(str1 != '\0') && (str2 != '\0')
está mal porque los 3 str son array, y no pueden ser '\0' eso inplicaría que son un punto de esa cadena

Código:
myStrcat(str1+1, str2, str3+1);
estás sumandole un entero a un array char...

en alguno de estos puntos es el segmentation (o en todos)
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
geshiro

Desconectado Desconectado

Mensajes: 178


Ver Perfil
Re: como pasar variable de una a otra desde una funcion
« Respuesta #5 en: 21 Mayo 2016, 23:23 pm »

entonces los tendria que cambar POR null
?
En línea

geshiro

Desconectado Desconectado

Mensajes: 178


Ver Perfil
Re: como pasar variable de una a otra desde una funcion
« Respuesta #6 en: 21 Mayo 2016, 23:25 pm »

como podria modificar mi funcion para que pueda concatenar
En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.618


🏴 Libertad!!!!!


Ver Perfil WWW
Re: como pasar variable de una a otra desde una funcion
« Respuesta #7 en: 21 Mayo 2016, 23:38 pm »

Código
  1. char *myStrcat(char *str1,char *str2){
  2. int len = strlen(str1)+strlen(str2);
  3. char *nuevo = calloc(len +1,sizeof(char));
  4. snprintf(nuevo,len,"%s%s",str1,str2);
  5. return nuevo;
  6. }
En línea

Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW
geshiro

Desconectado Desconectado

Mensajes: 178


Ver Perfil
Re: como pasar variable de una a otra desde una funcion
« Respuesta #8 en: 22 Mayo 2016, 00:04 am »

pero no puedo usar funciones ni punteros por eso lo puse global los arreglos :/
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: como pasar variable de una a otra desde una funcion
« Respuesta #9 en: 22 Mayo 2016, 00:25 am »

Citar
pero no puedo usar funciones ni punteros por eso lo puse global los arreglos :/
ya fallaste
Código:
void myStrcat(char str1[],char str2[], char str3[])

eso es una función con punteros como argumentos XD si vas a pasar array inevitablemente se hace uso de punteros, en su defecto declara los array globales y mystrcat no lleva argumentos, (a demás por ser globales pueden producir comportamiento no esperado) simplemente la llamas y sabe que str3 va todo lo de 1 y 2

En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines