Originariamente inviato da YuYevon
Non è deprecato nulla, formalmente è deprecata solo la gets(). Che poi certe funzioni abbiamo dei problemi noti è fuori dubbio, ma tra questo e dichiarare una funzione "deprecated" ci dovrebbe passare di mezzo una cosa che si chiama ISO.
Se la fgets() restituisce un valore diverso da NULL, significa che non c'è stato alcun errore e che non si è raggiunto l'EOF senza leggere alcun carattere; a quel punto quindi si entra nel corpo dell'if esterno e si cerca un eventuale '\n' alla fine della stringa letta perché la fgets() di default ce lo aggiunge sempre a meno che la lettura non sia terminata per un EOF, e quell'eventuale '\n' viene rimpiazzato con un terminatore classico '\0'.
Non sono io a dirlo ma l'output di compilazione (To disable deprecation )...
E senza entrare nel merito di quella "cosa" che si chiama ISO, non sarà difficile fartelo confermare.
Emh... no...
Guarda che la fgets() esegue già di suo tutto quello che hai descritto, tranne per il fatto che non aggiunge il carattere di newline ma quello di fine stringa..., quindi tutta la funzione è inutile, perchè ripete un compito che è già stato eseguito dalla fgets stessa.
fgets()
...A null character is automatically appended in str after the characters read to signal the end of the C string.