Bildirim
long int strtol(const char *str, char **strend, int base);
long int strtol(const char *restrict str, char **restrict strend, int base); (C99)
long long int strtoll(const char *restrict str, char **restrict strend, int base); (C99)
Açıklama
Str parametresi ile gösterilen karakter dizisini, base parametre değeri ile verilen sayı tabanına göre, long int bir değere çevirir. Strend parametre değeri NULL bir işaretçi değilse, dönüşümde kullanılan son karakterden sonraki karakteri gösteren bir işaretçi, strend tarafından gösterilen belleğe yüklenir.
Fonksiyon, öncelikle boşluk olmayan ilk karakter bulunana kadar gerekli tüm boşluk karakterlerini dikkate almadan ilerler. Daha sonra bu karakterden başlayarak, base parametresine uygun karakterleri alarak bunları sayısal bir değere çevirir.
Str parametresi içindeki boşluk olmayan karakterlerin ilki geçerli bir sayı değilse veya str boş olduğundan veya yalnızca boşluk karakterleri içerdiğinden sayısal değer yoksa çevirme işlemi yapılmaz.
Parametreler
str: Çevrilecek olan karakter dizisini gösteren bir işaretçidir.
strend: Bir karakteri gösteren işaretçiyi gösteren bir işaretçidir. Bu işaretçi fonksiyonun işlemi sona erdiğinde, geçerli son sayısal değerden sonraki ilk karakterin adresi alır.
base: Sayının çevrileceği sayı tabanını gösteren ve 2 ile 36 arasında veya 0 değeri alması gereken int bir değerdir. Bu değer 0 ise, sayısal taban otomatik olarak algılanır: önek 0 ise, sayı tabanı sekizlik, önek 0x veya 0X ise onaltılıktır, aksi takdirde taban ondalıktır.
Dönüş değeri
Başarı durumunda, çevrilen long int değer geri döndürülür. Eğer geçerli bir çevirme işlemi gerçekleştirilemezse, sıfır değeri döndürülür.
Örnek
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char cdizi[] = "32894&Bilgisayar";
char *cp;
long int ret;
ret = strtol(cdizi, &cp, 10);
printf("Sayı değeri: %ld\n", ret);
printf("Karakterler: %s", cp);
return 0;
}
Yukarıdaki örnekte, program aşağıdaki satırları ekrana yazar.
Sayı değeri: 32894 Karakterler: &Bilgisayar
Program bir karakter dizisi içindeki rakamsal değerleri long int bir değere çevirerek ve rakamsal olmayan değerleri doğrudan ekrana yazar.