Bildirim
uintmax_t strtoumax(const char* nptr, char** endptr, int base); (C99)
Açıklama
İlk parametre olan nptr işaretçisine geçirilen karakter dizisini yine üçüncü parametre olan base değerinde yer alan sayı tabanına uygun olarak sayıya çevirir ve uintmax_t bir değer geri döndürür.
Aynı zamanda ilk parametrede gösterilen dizide yer alan son geçerli sayısal karakterden sonraki ilk karakterin adresini endptr ile gösterilen ikinci parametreye atar. Eğer endptr NULL bir değer taşıyorsa, böyle bir işlem yapılmaz.
uintmax_t veri türü stdint.h başlık dosyasında tanımlanmış olup 64 bit uzunluğundaki long long int veri türüne karşılık gelmektedir. Sayı aralığı 0 ile 18.446.744.073.709.551.615 değerleri arasında yer almaktadır.
Parametreler
nptr: Sayıya çevrilecek karakter dizisini gösteren işaretçidir.
endptr: Bir karakter adesini gösteren işaretçi işaretçisidir.
base: Çevrilecek sayı tabanının int değeridir.
Dönüş değeri
Eğer fonksiyon başarılı bir şekilde çalışırsa, çevrilen int değer geri döndürülür.
Eğer dönüştürülen değer karşılık gelen dönüş türünün değer aralığının dışına çıkarsa, bir hata oluşur ve bir hata mesajı geri döndürülür.
Eğer sayıya çevirme işlemi gerçekleşmezse, 0 değeri geri döndürülür.
Örnek
#include <stdio.h>
#include <inttypes.h>
int main(void) {
char *cdizi = "5368764";
char *endptr;
printf("Sayı değeri: %lld", strtoimax(cdizi, &endptr, 10));
return 0;
}
Yukarıdaki örnekte, program aşağıdaki satırı ekrana yazar:
Sayı değeri: 7543286
Yukarıdaki program, strtoumax() fonksiyonu ile bir karakter dizisini bir sayıya çevirerek ekrana yazar.