Lisää
Kuinka muuntaa merkkijono kokonaisluvuksi C:ssä?
Yritän selvittää, onko olemassa vaihtoehtoista tapaa muuntaa merkkijono kokonaisluvuksi C:ssä.
Koodissani on säännöllisesti seuraava malli.
char s[] = "45";
int num = atoi(s);
Onko siis olemassa parempaa tapaa tai muuta tapaa?
235
3
On olemassa
strtol
, joka on IMO parempi. Olen myös tykästynytstrtonum
, joten käytä sitä, jos sinulla on se (mutta muista, että se ei ole siirrettävissä):EDIT
Saatat olla kiinnostunut myös
strtoumax
jastrtoimax
, jotka ovat C99:n standardifunktioita. Voit esimerkiksi sanoa:Joka tapauksessa, pysy kaukana
atoi
:sta:Älä käytä
ato...
-ryhmän funktioita. Ne ovat rikki ja käytännössä hyödyttömiä. Kohtalaisen parempi ratkaisu olisi käyttäässcanf
, vaikka sekään ei ole täydellinen.Jos haluat muuntaa merkkijonon kokonaisluvuksi, tulisi käyttää
strto...
-ryhmän funktioita. Sinun tapauksessasi se olisistrtol
-funktio.Kyllä, voit tallentaa kokonaisluvun suoraan:
Jos sinun täytyy jäsentää merkkijono,
atoi
taistrol
voittaa "lyhin määrä koodia" -kilpailun.