Alternativa a Gets (en C)

Iniciado por lalito22, 11 Noviembre 2014, 03:00 AM

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

lalito22

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!

engel lex

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"?
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

someRandomCode

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:

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'

theluigy13etv

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

zShackra

#4
Cita de: 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

Revisando el tema, veo que la función que el tío ha creado es muy semejante a la que se forja en este 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.