Ti ricordo che, usando fgets, viene preso anche l'invio ( quindi '\n') come carattere. Infatti, se tu sviluppi programmi in console, per inserire una stringa la scrivi e premi invio per confermare.
Piccolo esempio, se come input dai la stringa "albero":
- Con scanf ottieni "[a][l][b][e][r][o][\0]"
- Con fgets ottieni "[a][l][b][e][r][o][\n][\0]"
Quindi attenzione alla lunghezza che imposti per l'array dove contenere la stringa (se vuoi che il tuo array possa contenere una stringa di massimo 10 caratteri, dovrai dichiarare un array di dimensioni di almeno 10+2).
E quando stamperai questa stringa acquisita con fgets, ci sarà un ritorno a capo in automaico.