[ Foro de C ]

Problemas con gcc

07-Jun-2009 17:53
Aitor Ugarte
2 Respuestas

Hola de nuevo,el motivo de este mensaje es porque cuando intento compilar un sencillo programa de C en ubuntu me da error y no me deja hacerlo.El mismo programa realizado en windows con Borland c++ no me da error.Es el programa publicado por Nacho en el PDF en la pg.79,que compara dos palabras y dice si son iguales o diferentes. El mensaje que me sale en la terminal linux es.../tmp/ccO7vdOC.o: In function `main': fort.c:(.text+0x2f): warning: the `gets' function is dangerous and should not be used. Aparte de que me dice que la funcion gets no deberia usarse alguien ve algun otro problema en el aviso??y si la funcion gets no se admite en linux que hacer al respecto?
08-Jun-2009 01:38
Nacho Cabanes (+31)

Como tú mismo dices, no es un mensaje de error, sino un "warning", un aviso. Por tanto, el programa compila y puede funcionar correctamente.

El motivo de ese aviso es que "gets" no comprueba si el texto que teclea el usuario cabe en la variable. Por ejemplo, si declaras la variable como

char saludo[3];

y luego tecleas "Qué tal estás", claramente ese mensaje ocupa más de 3 letras (de las cuales, para colmo, sólo 2 son útiles,porque es necesario una letra adicional para marcar el final de la cadena). Esa situación daría un error en tiempo de ejecución.

Por eso, el compilador te avisa. Pero eso no quiere decir que siempre vaya a fallar, sino que podría llegar a fallar. La solución habitual es usar una cadena suficientemente grande para el "gets" y luego, si quieres, lo vuelcas a una cadena más pequeña, tras comprobar que cabe.

Por supuesto, hay soluciones mejores que usar un "gets"... pero no al alcance de un principiante...  ;-)


10-Jun-2009 13:59
Aitor Ugarte

Gracias una vez mas






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)