[ Foro de C ]
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... ;-)
(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.)