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.
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
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