• Miércoles 24 de Junio de 2026, 17:57

Autor Tema:  Retornar cadena de texto en función  (Leído 7385 veces)

JrcsDev

  • Miembro MUY activo
  • ***
  • Mensajes: 245
  • Nacionalidad: ve
    • Ver Perfil
    • http://codigo7.wordpress.com/
Retornar cadena de texto en función
« en: Martes 16 de Noviembre de 2010, 16:28 »
0
Buenas tardes amigos, estoy algo fuera de práctica en C++ (tampoco es que lo profundicé mucho en mi vida), pero estoy intentando retornar una cadena de texto (char * ) desde una función y me da error, algo así como fallo de segmentación... el código que estuve probando es este:

Código: C++
  1. char* readStr(const char* txt)
  2. {   char *s;
  3.     cout << txt << ": ";
  4.     cin >> s;
  5.     return s;
  6. }
  7.  

Código: C++
  1. texto=readStr("Ingrese su nombre");
  2.  

Alguna idea? se agradece cualquier ayuda... Saludos...
Sígueme en Twitter]
Donar comida a los chicos necesitados!
Todo lo puedo en Cristo que me fortalece...

punteroNULO

  • Miembro activo
  • **
  • Mensajes: 73
    • Ver Perfil
Re: Retornar cadena de texto en función
« Respuesta #1 en: Martes 16 de Noviembre de 2010, 18:03 »
0
El problema es que la variable s es un puntero que no tiene reservada una posición de memoria, sino que apunta a cualquier lugar (probablemente 0) provocando ese fallo de segmentación cuando intentas escribir en ella.
Inicializa con el operador new la variable.

LeGatoRojo

  • Miembro HIPER activo
  • ****
  • Mensajes: 552
  • Nacionalidad: mx
    • Ver Perfil
    • LeGatoRojo
Re: Retornar cadena de texto en función
« Respuesta #2 en: Martes 16 de Noviembre de 2010, 18:28 »
0
Declara s como arreglo o asignale memoria, con eso se resuelve el problema
Un día desperte y en lugar de dientes tenía colmillos, en lugar de manos, tenía garras; pero lo más impactante fue el color escarlata de mi pelaje.

JrcsDev

  • Miembro MUY activo
  • ***
  • Mensajes: 245
  • Nacionalidad: ve
    • Ver Perfil
    • http://codigo7.wordpress.com/
Re: Retornar cadena de texto en función
« Respuesta #3 en: Martes 16 de Noviembre de 2010, 18:46 »
0
ok, gracias por sus respuestas... googlearé sus recomendaciones a ver...
Sígueme en Twitter]
Donar comida a los chicos necesitados!
Todo lo puedo en Cristo que me fortalece...

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Retornar cadena de texto en función
« Respuesta #4 en: Miércoles 17 de Noviembre de 2010, 09:09 »
0
Si estás usando C++, usa la clase string, es mucho más cómoda que char*.

Código: C
  1. string readStr(const string txt)
  2. {  
  3.     string s;
  4.     cout << txt << ": ";
  5.     cin >> s;
  6.     return s;
  7. }
  8.  

JrcsDev

  • Miembro MUY activo
  • ***
  • Mensajes: 245
  • Nacionalidad: ve
    • Ver Perfil
    • http://codigo7.wordpress.com/
Re: Retornar cadena de texto en función
« Respuesta #5 en: Miércoles 17 de Noviembre de 2010, 11:51 »
0
Gracias por el consejo m0skit0... justamente ayer encontré ejemplos sobre esa clase string y recordé eso de que C++ es orientado a objetos. Pero entonces me surgió la duda si era una clase estándar... lo que pasa es que hace mucho me llevé algunos duros golpes cuando descubrí que librerías como conio.h no eran estándar, y tuve que modificar mucho código que tenía.
Sígueme en Twitter]
Donar comida a los chicos necesitados!
Todo lo puedo en Cristo que me fortalece...

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Retornar cadena de texto en función
« Respuesta #6 en: Miércoles 17 de Noviembre de 2010, 12:06 »
0
Creo que string es estándar en C++.

EDITO: sí, es estándar: http://www.cplusplus.com/reference/

PD: conio.h es de C, no de C++ de todas formas. Y efectivamente no es estándar. Te habrías evitado todo eso si hubieras programado sólo con C estándar desde el principio :P

JrcsDev

  • Miembro MUY activo
  • ***
  • Mensajes: 245
  • Nacionalidad: ve
    • Ver Perfil
    • http://codigo7.wordpress.com/
Re: Retornar cadena de texto en función
« Respuesta #7 en: Miércoles 17 de Noviembre de 2010, 12:11 »
0
Si si, yo sé que conio.h es de C, y que es no estándar.. Eso me lo aclaró EternalIdol hace unos años. Yo antes estaba aprendiendo C, pero prefiero las ventajas de la programación orientada a objetos. Gracias por las aclaratorias. Cuál es tu lenguaje de programación?
Sígueme en Twitter]
Donar comida a los chicos necesitados!
Todo lo puedo en Cristo que me fortalece...
Error de Conexión (2002) php_network_getaddresses: getaddrinfo failed: No address associated with hostname