Io so che gets() accetta tutti i caratteri fino al primo carattere di nuova linea (quindi fino a quando non si digita INVIO) e aggiunge in fondo alla stringa un carattere NULL, restituendo un puntatore alla stringa.
Però mi sembra che in certi compilatori tempo fa veniva definita deprecated, cioè valida, ma il suo utilizzo era sconsigliabile.
Può darsi sia per questo che crea problemi, prova fgets() definendo come prime parametro il flusso di input, oppure forse sscanf() (adesso non ho sotto mano un compilatore e non posso testarlo).
Ciao.