Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Ottenere valori interi
Forum - C/C++ - Ottenere valori interi

Avatar
Dedalpapero (Normal User)
Newbie


Messaggi: 3
Iscritto: 06/12/2009

Segnala al moderatore
Postato alle 12:17
Domenica, 06/12/2009
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 " ?

PM Quote
Avatar
gio97 (Ex-Member)
Guru


Messaggi: 715
Iscritto: 25/04/2009

Segnala al moderatore
Postato alle 12:40
Domenica, 06/12/2009
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 il 06/12/2009 alle 12:41
PM Quote
Avatar
Dedalpapero (Normal User)
Newbie


Messaggi: 3
Iscritto: 06/12/2009

Segnala al moderatore
Postato alle 12:54
Domenica, 06/12/2009
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"' )

PM Quote
Avatar
gio97 (Ex-Member)
Guru


Messaggi: 715
Iscritto: 25/04/2009

Segnala al moderatore
Postato alle 20:47
Domenica, 06/12/2009
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.

PM Quote