Kako pretvoriti niz v celo število v jeziku C?
Poskušam ugotoviti, ali obstaja alternativni način pretvorbe niza v celo število v jeziku C.
V svoji kodi redno uporabljam naslednji vzorec.
char s[] = "45";
int num = atoi(s);
Torej, ali obstaja boljši ali drug način?
235
3
Obstaja
strtol
, ki je IMO boljši. Prav tako mi je všečstrtonum
, zato ga uporabite, če ga imate (vendar ne pozabite, da ni prenosljiv):EDIT
Morda vas bosta zanimali tudi funkciji
strtoumax
instrtoimax
, ki sta standardni funkciji v jeziku C99. Na primer lahko rečete:Vsekakor se izogibajte
atoi
:Klic atoi(str) je enakovreden:
Ne uporabljajte funkcij iz skupine
ato...
. Te so pokvarjene in praktično neuporabne. Sorazmerno boljša rešitev bi bila uporaba funkcijesscanf
, čeprav tudi ta ni popolna.Za pretvorbo niza v celo število uporabite funkcije iz skupine
strto...
. V vašem primeru bi bila to funkcijastrtol
.Da, celotno število lahko shranite neposredno:
Če morate analizirati niz, bo
atoi
alistrol
zmagal na tekmovanju za "najkrajšo kodo".