elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Recibir un string del teclado de forma "segura"
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Recibir un string del teclado de forma "segura"  (Leído 2,501 veces)
NathanD

Desconectado Desconectado

Mensajes: 48


Ver Perfil
Recibir un string del teclado de forma "segura"
« 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.


En línea

durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: Recibir un string del teclado de forma "segura"
« Respuesta #1 en: 3 Diciembre 2012, 23:25 pm »

Con scanf creo que la forma de limitar la entrada es algo asi:
Código
  1. scanf("%Ns",arr); /* donde N es la cantidad maxima que admite arr */

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



Saludos


En línea

Ahorrate una pregunta, lee el man
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Recibir un string del teclado de forma "segura"
« Respuesta #2 en: 4 Diciembre 2012, 16:13 pm »

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()?
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
En línea

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
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines