Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: lalito22 en 11 Noviembre 2014, 03:00 am



Título: Alternativa a Gets (en C)
Publicado por: lalito22 en 11 Noviembre 2014, 03:00 am
Buenas noches gente, les comento mis problema estoy realizando un TP en la que en una parte me solicita aumentar sueldos a los empleados, donde se le pide al usuario primero elegir la categoria a la que quiere aumentar, o no poner nada y aumenta a todos los empleados.
Mi problema viene cuando deseo dejar el 'vacio' ya que con scanf no me lo permite ya que en la consola de linux solo salta de linea esperando a que coloque el algun caracter.

Esto lo habia solucioando con el Gets por momentos ya que en linux no es muy seguro ya que aveces lo pasa por alto.

Muchas gracias por su ayuda!
Saludos!


Título: Re: Alternativa a Gets (en C)
Publicado por: engel lex en 11 Noviembre 2014, 03:22 am
muestra tu codigo con gets (solo la sección) y usa las etiquetas geshi para publicar... explica lo de "en linux no es muy seguro"?


Título: Re: Alternativa a Gets (en C)
Publicado por: someRandomCode en 11 Noviembre 2014, 11:00 am
Tanto en Linux como en Windows como en cualquier lado tiene sus riesgos, si uno no usa bien gets() podes tener un buffer overflow, por ejemplo.
El se debe referir a que en Linux el compilador le advierte, en Windows si estuvieras usando Microsoft Visual Studio te advertiria lo mismo.
Si vamos al caso, una forma segura es usar fgets con stdin.
El tema es como lo vamos a usar, si tenes un buffer de 512, entonces te conviene usar:
Código:
fgets(buffer, // buffer con 512 bytes
512, // el espacio del buffer
stdin // handler de la entrada standard por teclado
);

De esta manera le estamos diciendo, LEE DEL TECLADO 512 CARACTERES MAXIMO Y GUARDALOS EN BUFFER, si son mas los corta automaticamente, si son menos (o encuentra un caracter de fin de archivo o linea nueva) termina la cadena con un '\0'


Título: Re: Alternativa a Gets (en C)
Publicado por: theluigy13etv en 17 Noviembre 2014, 04:32 am
Te recomiendo que te leas este post de Taringa que explica muy bien lo que necesitas  :)

http://www.taringa.net/post/ciencia-educacion/14450390/Lectura-de-cadenas-en-C.html (http://www.taringa.net/post/ciencia-educacion/14450390/Lectura-de-cadenas-en-C.html)


Título: Re: Alternativa a Gets (en C)
Publicado por: zShackra en 17 Noviembre 2014, 05:23 am
Te recomiendo que te leas este post de Taringa que explica muy bien lo que necesitas  :)

http://www.taringa.net/post/ciencia-educacion/14450390/Lectura-de-cadenas-en-C.html (http://www.taringa.net/post/ciencia-educacion/14450390/Lectura-de-cadenas-en-C.html)

Revisando el tema, veo que la función que el tío ha creado es muy semejante a la que se forja en este (http://foro.elhacker.net/programacion_cc/c_limpiando_la_stdin_correctamente-t424539.0.html) tema, aunque la que se expone en el tema que cito, está más pulida (modestia aparte), sin embargo con punteros se perfeccionaría aún más... K&R hicieron una obra maestra.

D.E.P. Ritchie.