Ominide 4157 punti

Funzione scanf()


La funzione scanf() è una delle funzioni principali usate in C ed è dichiarata nel file header stdio.h.
Questa funzione legge la variabile messa come input dalla tastiera e la mette in una o più variabili.
È possibile inserire tutti i caratteri eccetto quelli di spaziatura, eccetto nel tipo %c.
scanf() termina quando viene digitato uno spazio o EOF.

Ci possono essere problemi di buffer overflow anche con scanf(), quando il dato supera le dimensioni di quella del buffer dove viene memorizzato, le cifre in eccedenza sovrascrivano altre variabili o causando un errore di segmentazione.
Questo problema si può risolvere:
- Aggiungendo la direttiva _CRT_SECURE_NO_WARNINGS
- Utilizzando scanf_s dove occore specificare la lunghezza dell’input
scanf_s ("%s", string ,10) ;
Immettendo i caratteri, questi vengono letti e memorizzati nel buffer (area di memoria) uno alla volta. I caratteri vengono letti dal buffer senza svuotarlo perciò se ci sono letture successive del buffer possono esserci risultati inaspettati.
Per risolvere questo problema:
- Inserire nello scanf() anche caratteri di spazio o a capo che devono essere letti
- Svuotare il buffer tra le diverse letture con determinate funzioni: getchar(), fflush()/fpurge(), rewind(stdin).
- Usare la direttiva #define FFLUSH while ( getchar () != '\n');
Hai bisogno di aiuto in Informatica?
Trova il tuo insegnante su Skuola.net | Ripetizioni
Potrebbe Interessarti
×
Registrati via email