Come convertire una stringa in un numero intero in C?
Sto cercando di scoprire se c'è un modo alternativo per convertire le stringhe in numeri interi in C.
Ho regolarmente il seguente modello nel mio codice.
char s[] = "45";
int num = atoi(s);
Quindi, c'è un modo migliore o un altro modo?
235
3
C'è
strtol
che è migliore IMO. Inoltre ho preso in simpatiastrtonum
, quindi usalo se ce l'hai (ma ricorda che non è portatile):EDIT
Potreste anche essere interessati a
strtoumax
estrtoimax
che sono funzioni standard in C99. Per esempio potreste direComunque, stai lontano da
atoi
:Non usare le funzioni del gruppo
ato...
. Queste sono rotte e praticamente inutili. Una soluzione moderatamente migliore sarebbe quella di usaresscanf
, anche se non è perfetta.Per convertire una stringa in un numero intero, si dovrebbero usare le funzioni del gruppo
strto...
. Nel tuo caso specifico sarebbe la funzionestrtol
.Sì, potete memorizzare direttamente l'intero:
Se devi analizzare una stringa,
atoi
ostrol
vinceranno il "concorso per il codice più breve".