• Miércoles 20 de Noviembre de 2024, 10:17

Autor Tema:  Retornar cadena de texto en función  (Leído 5598 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...

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Retornar cadena de texto en función
« Respuesta #8 en: Miércoles 17 de Noviembre de 2010, 12:36 »
0
Cita de: "JrcsDev"
Cuál es tu lenguaje de programación?
Probablemente todos los que conozcas ya los haya usado alguna vez ^_^  ;)

JrcsDev

  • Miembro MUY activo
  • ***
  • Mensajes: 245
  • Nacionalidad: ve
    • Ver Perfil
    • http://codigo7.wordpress.com/
Re: Retornar cadena de texto en función
« Respuesta #9 en: Miércoles 17 de Noviembre de 2010, 12:41 »
0
jajaja, es posible, yo no tengo los años del mundo programando, pero si he conocido unos cuántos lenguajes. Yo preguntaba es si te dedicas a algún lenguaje en específico... Porque yo desde hace un tiempo soy programador web (PHP), pero he pasado por muchos lenguajes como qBasic, Pascal, C ... y otros de esas épocas
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 #10 en: Miércoles 17 de Noviembre de 2010, 13:00 »
0
Ahora mismo trabajo con Java y Power Builder, pero he trabajado con Visual Basic, PL/SQL y otros (me da pereza recordarlos todos  :P ) y tengo proyectos personales en C, C++, Perl, LISP, ensamblador x86 y MIPS.

Pero vamos, una vez conoces unos cuántos, todos son iguales. Lo importante es saber un poco de qué van los paradigmas de programación  ;)

JrcsDev

  • Miembro MUY activo
  • ***
  • Mensajes: 245
  • Nacionalidad: ve
    • Ver Perfil
    • http://codigo7.wordpress.com/
Re: Retornar cadena de texto en función
« Respuesta #11 en: Miércoles 17 de Noviembre de 2010, 13:21 »
0
Es correcto, aunque personalmente sobre Perl, LISP y MIPS no tengo la mínima idea... Me dio curiosidad, voy a ver qué encuentro sobre ellos en google. Yo ya dejé de programar en Visual Basic y lenguajes específicos de una plataforma.
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 #12 en: Miércoles 17 de Noviembre de 2010, 14:31 »
0
MIPS es un procesador. Me refería a ensamblador de MIPS  ^_^

Cita de: "JrcsDev"
Yo ya dejé de programar en Visual Basic
Pues ya somos dos  :lol:

the dragon lives

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Retornar cadena de texto en función
« Respuesta #13 en: Sábado 11 de Diciembre de 2010, 10:53 »
0
Cita de: "m0skit0"
Cita de: "JrcsDev"
Cuál es tu lenguaje de programación?
Probablemente todos los que conozcas ya los haya usado alguna vez ^_^  ;)
Yo también tengo una pregunta para ti. Hace un tiempo un tal m0skit0 con colaboración de 3 programadores más descubrieron y explotaron un bug del demo patapon2 para la PSP, ahora la pregunta.
¿Eres el mismo m0skit0?

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Retornar cadena de texto en función
« Respuesta #14 en: Sábado 11 de Diciembre de 2010, 12:00 »
0
Sí, soy ese m0skit0. Por favor, este tipo de preguntas off-topic por MP mejor.