Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: NathanD en 3 Diciembre 2012, 21:56 PM

Título: Recibir un string del teclado de forma "segura"
Publicado por: NathanD en 3 Diciembre 2012, 21:56 PM
Buenas, mi duda es la siguiente: qué forma hay de trabajar con cadenas de caracteres de una forma segura con las funciones scanf() y/o gets()? Ya sabéis, a ceñirnos a los espacios en la memoria reservados para el array en cuestión. Sé qué existe la función gets_s(), pero me gustaría saber si se puede con las otras dos mencionadas al principio.

Gracias de antemano y saludos.
Título: Re: Recibir un string del teclado de forma "segura"
Publicado por: durasno en 3 Diciembre 2012, 23:25 PM
Con scanf creo que la forma de limitar la entrada es algo asi:
scanf("%Ns",arr); /* donde N es la cantidad maxima que admite arr */

Con gets() no tenes un delimitador, es mejor usar fgets



Saludos
Título: Re: Recibir un string del teclado de forma "segura"
Publicado por: rir3760 en 4 Diciembre 2012, 16:13 PM
Cita de: NathanD en  3 Diciembre 2012, 21:56 PMmi duda es la siguiente: qué forma hay de trabajar con cadenas de caracteres de una forma segura con las funciones scanf() y/o gets()?
No se debe utilizar la función gets porque no hay forma de limitar los caracteres que esta lee y almacena en el array indicado.

En su lugar se pueden utilizar fgets y scanf, como indicar la capacidad del contenedor en el caso de la primera y el numero máximo de caracteres a almacenar en el caso de la segunda se indica en el tema Duda con puntero a arreglo de caracteres (http://foro.elhacker.net/programacion_cc/duda_con_puntero_a_arreglo_de_caracteres-t377347.0.html;msg1805733#msg1805733).

Un saludo