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ş:
Dönüştürme binlerce virgül ile Dize Ta...
Java: Liste dönüştürme en İyi yolu<...
Nasıl bir dize bir tamsayı olduğunu ko...
Nasıl dönüştürme "varsayılan"...
Java tarih için dize dönüştürme...