str işlevleri
stdlib.h dosyasında,
wcs ile başlayan işlevler
wchar.h dosyasında bildirilmiştir. Bu bölümdeki işlevlerin prototiplerinde
restrict kullanımı şaşırtıcı olabilir. Kullanışsız görünür ama ISO C standardı onu kullandığı için (burada tanımlı işlevler için) biz de kullandık.
double strtod | (const char *restrict dizge,
char **restrict kalan-dizge) |
işlev
strtod ("string-to-double" kısaltması) işlevi dizge dizgesinin baştarafını bir gerçek sayıya dönüştürür ve sonucu double türünde bir değer olarak döndürür.
İşlev dizge'yi şu şekilde analiz etmeye çalışır:
Boşluk karakterlerinden oluşan bir dizge (muhtemelen boş). Boşluk karakterleri
isspace işlevi ile saptanır ve bunlar iptal edilir (bkz.
Karakterlerin Sınıflandırılması).
İsteğe bağlı artı ya da eksi işareti (+ veya -).
Onluk ya da onaltılık biçimde bir gerçek sayı. Onluk biçim şöyle çözümlenmeye çalışılır:
Onaltılık biçim şöyle çözümlenmeye çalışılır:
Dizgede kalan karakterler. Eğer kalan-dizge bir boş gösterici değilse işlev bu artıkları *kalan-dizge içine yerleştirir.
Eğer dizge boşsa, sadece boşluk karakterleri içeriyorsa ya da başlangıçtaki altdizge bir gerçek sayı için umulan sözdizimine sahip değilse hiçbir dönüşüm yapılmaz. Bu durumda, işlev sıfırla döner ve dizge değeri *kalan-dizge içine yerleştirir.
Yerel, standart "C" ya da "POSIX" yerellerinden farklıysa, bu işlev gerçeklemeye bağlı olarak ek sözdizimini tanıyabilir.
Eğer dizge bir gerçek sayı için geçerli sözdizimine sahip olduğu halde değer
double türün kapsamı dışındaysa,
strtod işlevi
Hataların Matematiksel İşlevlerce Raporlanması bölümünde açıklandığı gibi üstten ya da alttan taşma sinyalleyecektir.
strtod işlevi dört özel girdi dizgesi tanır. Bu dizgelerden "inf" ve "infinity" ya oo'a ya da gerçek sayı biçimi sonsuzlukları desteklemiyorsa gösterilebilir en büyük sayıya dönüştürülür. Önlerine işareti belirtmek için bir "+" veya "-" konulabilir. Bu dizgelerde harf büyüklüğünün önemi yoktur.
"nan" ve "nan(karakterler)" dizgeleri ise NaN'a dönüştürülür. Yine harf büyüklüğünün önemi yoktur. Eğer karakterler belirtilmişse, NaN'ın kısmi bir gösterimine (herşey olabilir) karşılık olarak kullanılır.
Sıfır geçerli bir sonuç olduğu kadar hata oluştuğunu da belirtebilir. Hatayı sınamak için errno ve kalan-dizge'yi strtol işlevinin açıklamasında anlatıldığı gibi kullanmalısınız.
float strtof | (const char *dizge,
char **kalan-dizge) |
işlev
long doublestrtold | (const char *dizge,
char **kalan-dizge) |
işlev
Bu işlevler strtod işlevinin benzeri olmakla birlikte, sırayla float ve long double değerle dönerler. Hataları strtod gibi raporlarlar. Hassasiyeti daha düşük olduğundan strtof işlevi strtod işlevinden daha hızlı olabilir; tersine, hassasiyeti daha yüksek olduğundan strtold daha yavaş olabilir (long double türünün ayrı bir tür olduğu sistemlerde).
Bu işlevler ISO C99'da yeni olmasına rağmen evvelce GNU oluşumuydular.
double wcstod | (const wchar_t *restrict dizge,
wchar_t **restrict kalan-dizge) |
işlev
float wcstof | (const wchar_t *dizge,
wchar_t **kalan-dizge) |
işlev
long double wcstold | (const wchar_t *dizge,
wchar_t **kalan-dizge) |
işlev
wcstod, wcstof ve wcstol işlevleri sırayla strtod, strtof ve strtold işlevleriyle geniş arakterleri kabul etmeleri dışında hemen herşeyleriyle benzerdirler.
wcstod işlevi ISO C90'ın 1. düzeltmesinde vardı. wcstof ve wcstold işlevleri ise ISO C99'da tanıtıldı.
double atof | (const char *dizge) |
işlev
Bu işlev alttan ve üstten taşma hatalarının saptanmasını gerektirmemesi dışında strtod işlevine benzer. atof işlevi mevcut kodla uyumluluk adına vardır; strtod kullanım bakımından daha güçlüdür.
GNU C kütüphanesi ayrıca bu işlevlerin dönüşümde yerel kullanmak için bir ek argüman alan
_l sürümlerini de içerir. Bkz.
Tamsayıların Çözümlenmesi.