Non credo di aver capito appieno il discorso su ctrl-D/Z e la terminazione. Per es. da stdin non basta premere Enter per terminare e inserire la linea di input? Quella combinazione di tasti
non dà forse un EOF? Cosa c'entra EOF? Praticamente stai dicendo che tutti i caratteri inseriti ci sono stati, a parte EOF (successivo a Enter?)?
Se è giusto tutto questo allora credo di aver capito che con "non gestisce" tu intendessi il caso in cui ci sia stato tutto fatta eccezione per EOF, visto che strlen(nome)-1, nell'intenzione dell'esempio di beccare il newline, deve appunto per forza corrispondere al newline, segno quindi che dopo non c'è nessun EOF, ma solo il null. Se è corretto ripeto tuttavia il mio dubbio: a che serve mettere ctrl-D/Z per affermare che così un input da tastiera sia terminato? Questo credo avrebbe significato solo nel caso in cui lo stream dovesse venir accolto in un file, mentre l'esempio non sembra riferirsi a questa circostanza, ma a una semplice stringa nome.