Mai usare la scanf, che ti sporca il buffer di input.
Tutto l' input dell' utente viene messo in un' area di memoria e poi viene letto.Se l' utente digita caratteri che non vengono letti, questi rimangono nel buffer e vengono letti durante la successiva funzione di input, inquinando così il risultato.
gets() non sporca il buffer perché legge tutti i caratteri, però ha il problema che non fa alcun controllo sulla quantità di caratteri letti, il che può causare un segmentation fault.
In definitiva: usa solo la fgets (tieni conto del fatto che legge anche il carattere '\n'), e se vuoi leggere degli interi converti la stringa in int con atoi.
Esempio:
codice:char buffer[100]; int num; puts("Digita un numero : "); fgets(buffer,100,stdin); num=atoi(buffer);

Rispondi quotando