Buenas,
Solo apuntar que la función gets no debería usarse jamás. Es insegura ya que no controla el tamaño del buffer y se puede desbordar. Esto puede causar errores inesperados y difíciles de depurar y además permite ataques de tipo buffer overflow.
De hecho, esta función ha sido definitivamente eliminada del standar C en la la revisión C11.
http://en.wikipedia.org/wiki/C11_(C_standard_revision)
Deberías usar fgets o s_gets en su lugar.
Un saludo