11 AÄžUSTOS 2011, PERÅžEMBE
Tamsayı dönüştürme dize C
Eğer string C tamsayı dönüştürmek için alternatif bir yol olup olmadığını öğrenmek için çalışıyorum
Ben düzenli olarak benim kod yapın.
char s[] = "45";
int num = atoi(s);
Kısa bir yol veya başka bir yolu yoktur
CEVAP
11 AÄžUSTOS 2011, PERÅžEMBE
Daha iyi IMO olan strtol var. Ayrıca eğer varsa onu kullanın strtonum, bir sevme (ama taşınabilir değil, unutmayın) aldım:
long long
strtonum(const char *nptr, long long minval, long long maxval,
const char **errstr);
EDİT
Ayrıca strtoumax ve standart olan strtoimax ilginizi çekebilir. Örneğin diyebilirsiniz:
uintmax_t num = strtoumax(s, NULL, 10);
if (num == UINTMAX_MAX && errno == ERANGE)
/* Could not convert. */
Her neyse, atoi uzak durun:
Çağrı atoi(str) eşit olacaktır:
(int) strtol(str, (char **)NULL, 10)hataları işleme farklı olabilir dışında.Eğer değeri varsa temsil, davranış tanımsızdır.
Bunu PaylaÅŸ:

Java: Liste dönüştürme en İyi yolu<...
Tamsayı dönüştürme dize C...
Python Dize ve Tamsayı birleştirme...
Dönüştürme 8601 uyumlu ISO java Dize.a...
Neden java Dize Tamsayı döküm olamaz?...