Oppure

Loading
06/12/09 11:17
Dedalpapero
Sebbene abbia sempre usato la funzione scanf() per ottenere in input qualsivoglia dato, un libro (forse un po' datato) che ho preso in biblioteca utilizza invece l'accoppiata di atoi() con all'interno gets(), per ricevere un valore prima come stringa e poi trasformarlo in intero ( correggetemi se sbaglio ). Ci sono delle differenze tra i due metodi ? Qual è il più " conveniente " ?
aaa
06/12/09 11:40
gio97
Penso che per la massima sicurezza dovresti usare fgets() e come stream STDIN. Poi l'atoi(). Comunque usa scanf("%d", &variabile). Oppure sempre per sicurezza fscanf() e di nuovo come stream STDIN. Dovrebbe prevenire i buffer overflow.
Ultima modifica effettuata da gio97 06/12/09 11:41
aaa
06/12/09 11:54
Dedalpapero
Continuando a leggere ho trovato una nota a riguardo (scusate):

Dice che non usa scanf() perché non è compatibile con tutti i dati, perché rende difficile l'inserimento di dati con spazi bianchi al loro interno e perché è una funzione di grandi dimensioni ( usa l'espressione 'sul tipo "bomba all'idrogeno per uccidere una formica"' )
aaa
06/12/09 19:47
gio97
Si usa scanf e printf quasi sempre. Lo fanno tutti. Se proprio devi farlo in qualche altro modo, io ti ho indicato altre 2 vie.
aaa