C'de bir dizeyi tam sayıya nasıl dönüştürebilirim?
C'de dizeyi tamsayıya dönüştürmenin alternatif bir yolu olup olmadığını öğrenmeye çalışıyorum.
Kodumda düzenli olarak aşağıdaki örüntüyü kullanıyorum.
char s[] = "45";
int num = atoi(s);
Peki, daha iyi bir yol ya da başka bir yol var mı?
235
3
IMO'ya göre daha iyi olan
strtol
vardır. Ayrıcastrtonum
'den de hoşlanıyorum, eğer varsa onu kullanın (ancak taşınabilir olmadığını unutmayın):EDIT
C99'da standart fonksiyonlar olan
strtoumax
vestrtoimax
da ilginizi çekebilir. Örneğin şöyle diyebilirsiniz:Her neyse, "atoi "den uzak durun:
ato...
grubundaki işlevleri kullanmayın. Bunlar bozuk ve neredeyse işe yaramaz. Mükemmel olmasa da
sscanf` kullanmak kısmen daha iyi bir çözüm olacaktır.Dizeyi tamsayıya dönüştürmek için
strto...
grubundaki fonksiyonlar kullanılmalıdır. Sizin özel durumunuzda bustrtol
fonksiyonu olacaktır.Evet, tamsayıyı doğrudan saklayabilirsiniz:
Bir dizeyi ayrıştırmanız gerekiyorsa,
atoi
veyastrol
"en kısa kod miktarı" yarışmasını kazanacaktır.