Programación General > Visual C++

 Función Que Devuelve Una Cadena.

(1/2) > >>

dayler:
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:

--- Código: Text ---#include &#60;iostream&#62;#include &#60;stdlib.h&#62;#include &#60;stdio.h&#62;using namespace std;  char leerPantalla()  {    char nombre[20];    scanf(&#34;%s&#34;,nombre);     return *nombre;   }    
error 1: estas devolviendo un apuntador a char

--- Código: Text ---return *nombre; 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 ---    int *nombre;    *nombre=leerPantalla(); 
si la funcion devuelve char ( aunque deberia ser char*) porque recibes los datos en un int* ?

shakka:
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 ---//la funcion no es nada funcional//(valga la redundancia, ya que solamente usa scanf... pero bueno me imagino//que es para practicar con funciones) void leerPantalla(char *nombre){  scanf(&#34;%s&#34;,nombre);} y la invocas ... char *cadena;   leerPantalla(cadena); 

dayler:
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:
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).

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa