Recibir un string del teclado de forma "segura"

Iniciado por NathanD, 3 Diciembre 2012, 21:56 PM

0 Miembros y 1 Visitante están viendo este tema.

NathanD

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.

durasno

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
Ahorrate una pregunta, lee el man

rir3760

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.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language