• Sábado 14 de Diciembre de 2024, 16:00

Autor Tema:  Función Que Devuelve Una Cadena.  (Leído 1491 veces)

dayler

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
Función Que Devuelve Una Cadena.
« en: Miércoles 20 de Septiembre de 2006, 23:07 »
0
hola
tengo problemas a la hora de implementar la siguiente función:

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
using namespace std;

 char leerPantalla()
  {

   char nombre[20];
    scanf("%s",nombre);
    return *nombre;
   }
   
   
int main()
{
    int *nombre;
    cout<<"NOMBRE:"<<endl;
    *nombre=leerPantalla();
    cout<<nombre<<endl;
    system("pause");
    return 0;
}

el programa debe de leer una cadena de tecladoydesplegarla en pantalla.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Función Que Devuelve Una Cadena.
« Respuesta #1 en: Miércoles 20 de Septiembre de 2006, 23:26 »
0
Código: Text
  1. #include &#60;iostream&#62;
  2. #include &#60;stdlib.h&#62;
  3. #include &#60;stdio.h&#62;
  4. using namespace std;
  5.  
  6.  char leerPantalla()
  7.   {
  8.  
  9.    char nombre[20];
  10.     scanf(&#34;%s&#34;,nombre);
  11.     return *nombre;
  12.    }
  13.    
  14.  

error 1: estas devolviendo un apuntador a char
Código: Text
  1. return *nombre;
  2.  
pero la funcion dice que solo devuelves un char
<!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>XCODE </td></tr><tr><td id='XCODE'><!--exc1-->char leerPantalla()<!--xc2--></td></tr></table><div class='postcolor'><!--exc2-->

Sin contar que no le estas indicando al scanf que solo capture los 20 caracteres por seguridad..
   
error 2 :
Código: Text
  1.     int *nombre;
  2.     *nombre=leerPantalla();
  3.  

si la funcion devuelve char ( aunque deberia ser char*) porque recibes los datos en un int* ?
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

shakka

  • Miembro HIPER activo
  • ****
  • Mensajes: 679
  • Nacionalidad: cr
    • Ver Perfil
    • http://mbrenes.com
Re: Función Que Devuelve Una Cadena.
« Respuesta #2 en: Miércoles 20 de Septiembre de 2006, 23:32 »
0
Y que problemas tienes?

Algo que noto es que la funcion leerPantalla() devuelve por cola un caracter y al invocarla estas recogiendo el resultado con puntero a entero.

Porque no la devuelves por boca.

Es decir:

Código: Text
  1. //la funcion no es nada funcional
  2. //(valga la redundancia, ya que solamente usa scanf... pero bueno me imagino
  3. //que es para practicar con funciones)
  4.  
  5. void leerPantalla(char *nombre)
  6. {
  7.   scanf(&#34;%s&#34;,nombre);
  8. }
  9.  
  10. y la invocas
  11.  
  12. ...
  13.  
  14. char *cadena;
  15.  
  16.   leerPantalla(cadena);
  17.  

dayler

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
Re: Función Que Devuelve Una Cadena.
« Respuesta #3 en: Jueves 21 de Septiembre de 2006, 00:42 »
0
hola otra ves soy yo...

bueno si que respondieron rápido, primeramte indicar que la introducción de

  int *nombre, fuen involuntaria, lo que en realidad iva era char *nombre,
beuno de todas formas les agradesco a todos los que se tomaron la molestia de responderme, lo que en realidad debia de acer la función es retornar una cadena, no importa de donde, pero gracias a dios descubri la función 'gets()', que soluciona mi problema, nuevamente gracias... y hasta pronto. :)

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Función Que Devuelve Una Cadena.
« Respuesta #4 en: Jueves 21 de Septiembre de 2006, 01:10 »
0
Ya que estás con Visual C++, lo mejor es que no uses gets y en su lugar emplees gets_s:

gets_s (CRT)

O también pasarte al uso de string :).

Saludos,
JJ (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Función Que Devuelve Una Cadena.
« Respuesta #5 en: Jueves 21 de Septiembre de 2006, 07:50 »
0
¿Nadie nota que la variable nombre en la funcion leerPantalla es local? Esa variable esta en la pila ... no la podes usar asi tan alegremente ...

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.