SORU
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ş:
  • Google+
  • E-Posta
Etiketler:
C

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FD2097

    FD2097

    21 HAZİRAN 2009
  • KIT KAT

    KIT KAT

    3 EKİM 2005
  • Santozz Yazz

    Santozz Yazz

    23 Mart 2014