[C con Clase] Ingreso de datos cin

Asdrúbal Iván Suárez Rivera asdrubal.ivan.suarez.rivera en gmail.com
Mar Nov 22 16:26:26 CET 2011


Amigo mío... La función gets es muy insegura, recomiendo encarecidamente NO
USARLA. Lee esto:

http://www.gidnetwork.com/b-56.html

Un abrazo!

El 22 de noviembre de 2011 09:22, luis alfonso jimenez mejia <
viejolajimenez en gmail.com> escribió:

> sencillo  utiliza   la funcion gets("");
>
> El 22 de noviembre de 2011 05:25, Steven Davidson <srd4121 en njit.edu>escribió:
>
> Hola Luis,
>>
>> 2011/11/22 Luis Gutierrez Gomez <gutierrezgl en hotmail.com>:
>> >
>> >
>> > Hola a todos, y agradeciendo de antemano sus consejos.
>> >
>> > Tengo el siguiente problema. Este programa lo que debe hacer es
>> inicialmente solicitarme 10
>> >
>> > nombres de personas y sus telefonos. Llenados esos datos, me mostrará
>> un menú donde puede elegir:
>> >
>> > a) saber el telefono de una persona ingresando su nombre.
>> >
>> > b) saber el nombre de una persona ingresando su telefono. Y
>> >
>> > c) salir del programa.
>> >
>> >
>> >
>> > El programita aparentemente funcionaba bien, ya que para todas las
>> pruebas, solo le ingresaba
>> >
>> > un nombre solo ( sin apellido ) y su numero telefonico, de los diez
>> datos que me pedia , bueno en realidad
>> >
>> > lo probaba con tres datos. Bueno el hecho es que si funcionaba bien.
>> Pero ya al final de las pruebas
>> >
>> > lo quise probar con datos mas reales que ingresaba, que constaban de un
>> nombre y apellido (separado ´por un tab(barra
>> >
>> > espaciadora) ), pero
>> >
>> > al dar "enter", la aplicación se salta al siguiente "nombre", osea ya
>> no me pide el telefono del primer dato ingresado.
>> >
>> > Esto lo he observado que pasa cada vez que uso el "tab" separando
>> nombre de apellido al ingresar el dato "nombre"; ya que cuando
>> >
>> > ingreso el mismo nombre y apellido corrido (sin "tab")el programa si me
>> pide el telefono respectivo, osea ya
>> >
>> > no se salta, y el programa funciona bien.
>> >
>>
>> Esto se debe al comportamiento de 'cin >>' cuando lee caracteres. Se
>> detiene al leer un espacio blanco: ' ' (espacio), '\t' (tabulador),
>> '\r' (retorno de carro). '\n' (nueva línea), '\v' (tabulador
>> vertical), y '\f' (avance de página).
>>
>> La solución es usar la función miembro 'getline()' que lees y extrae
>> todos los caracteres hasta que una de las siguientes tres condiciones
>> suceda:
>> 1. Se lee una cantidad de N-1 caracteres indicada por el usuario como N,
>> 2. Se lee hasta el carácter separador, que por defecto es '\n', o
>> 3. Se lee hasta el carácter de fin-de-fichero (EOF).
>>
>> En cualquier caso, siempre se agrega el carácter nulo al final de la
>> cadena. Por ejemplo,
>>
>> char szNombreCompleto[1024]="";
>>
>> cin.getline( szNombreCompleto, 1024 );
>>
>>
>> Puedes consultar la referencia en el apéndice E de nuestro curso de C++:
>> - http://c.conclase.net/curso/index.php?cap=904c#APD_istream
>> - http://c.conclase.net/curso/index.php?cap=904f#APD_funcionescin
>>
>>
>> Espero haber aclarado la duda.
>>
>> Steven
>>
>> _______________________________________________
>> Lista de correo Cconclase Cconclase en listas.conclase.net
>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>



-- 
Asdrúbal Iván Suárez Rivera

*El éxito de alguien que enseña no es que sepa mucho, sino que lo poco que
sabe lo sepa hacer llegar.*
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20111122/23880a74/attachment.html>


Más información sobre la lista de distribución Cconclase