La función gets() recoge una cadena de caracteres del buffer de entrada estandar hasta encontrar \n, y luego sustituye ese \n por un \0. Por tanto lo que dices no tiene sentido, no se para en los espacios en blanco, igual hay algún problema con basura que haya quedado en el buffer...
Prueba lo siguiente:
fflush(stdin);
printf("Introduce nombre: ");
gets(nom);
Si aun así no funciona no sé qué puede ser...
Seguro que no se recoge bien??? no será que luego tratas la información contenida en "nom" mal???
Manda el código completo si sigue sin funcionar.
Un saludo.