Quote Originariamente inviata da YuYevon Visualizza il messaggio
Questo non è così banale come può sembrare. Le funzioni della famiglia *scanf() sono abbastanza "tricky", non a caso la man page relativa è piuttosto corposa. C'è chi suggerisce di evitare del tutto questa famiglia di funzioni per la lettura da file o da stdin e di ricorrere a work-around come leggere sempre il dato come stringa con la fgets() e poi convertirlo in intero con atoi(), ma per approfondimenti, nel caso ti interessi, ti rimando al web che se ne cade di articoli sull'argomento (si tratta comunque *quasi* esclusivamente di scuole di pensiero).
Sapevo da tempo che la scanf() è da evitare per problemi legati ad un possibile overflow, però se utilizzata bene, con il dovuto controllo sul valore di ritorno e l'utilizzo del parametro [width] (es. %20s) non vedo che altri problemi possa generare. Più che altro è una funzione "limitante", visto che vincola il tipo di input da considerare.
Ad ogni modo, per le stringhe ho sempre utilizzato la fgets(). Per i tipi numerici ho sempre utilizzato la scanf(), ma proverò a seguire il tuo consiglio. Grazie per la precisazione