Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /var/www/vhosts/bilgigunlugum.net/httpdocs/index.php on line 43
C Programlama

BG MVC Model View Controller eğitim serisi yayında...

Ana sayfa > Programlama > C Programlama > C standart kütüphanesi > <stdlib.h> > mblen

mblen() fonksiyonu

Bildirim

int mblen(const char *str, size_t n);

Açıklama

Str parametresi ile başlangıç adresi gösterilen çok byte'lı bir karakter dizisinin uzunluğunu, en fazla n parametre değeri ile gösterilen uzunlukta işlem yaparak, hesaplar.

NULL bir işaretçi ile çağrıldığında, fonksiyon dahili kaydırma durumunu başlangıç değerine sıfırlar ve çok baytlı karakterlerin duruma bağlı bir kodlama kullanıp kullanmayacağı bilgisini geri döndürür.

Parametreler

str: Çok byte'lı karakter dizisinin ilk byte değerini gösteren bir işaretçidir.

n: Karakter uzunluğu için kontrol edilecek maksimum karakter sayısıdır.

Dönüş değeri

Str parametre değeri;

  • NULL bir işaretçi değil ise, çok byte'lı karakter dizisinde bulunan byte sayısını,
  • İlk byte geçerli bir çok byte'lık karakter değilse -1 değerini,
  • İlk karakter boş bir karakter ('\0') ise 0 değerini geri döndürür.

Eğer str parametre değeri NULL bir işaretçi ise, başlangıç kaydırma durumunu temsil etmek için iç dönüşüm durumunu sıfırlar ve geçerli çok byte'lı kodlama duruma bağlı değilse (kaydırma dizileri kullanmazsa) 0 değerini veya duruma bağlı ise (kaydırma dizileri kullanırsa) sıfır olmayan bir değer geri döndürür.

Örnek


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
    const wchar_t cwdizi[] = L"Bilgisayar";
    char buffer[40];
    int ret, length;

    printf ("Geniş karakter dizisi: %ls\n", cwdizi);

    /* Geniş karakter dizisini çoklu byte diziye çevirme */
    ret = wcstombs (buffer, cwdizi, sizeof(buffer));
    if (ret) {
        printf("Çoklu byte karakter dizisi: %s\n", buffer);
        printf("Çevrilen karakter sayısı: %d\n", ret);
    }

    /* buffer ile gösterilen geniş karakterin boyutunu alma */
	length = mblen (buffer, sizeof(buffer));

    printf("Çoklu byte karakter dizi uzunluğu: %d, karakter uzunluğu: %d", strlen(buffer), length);

    return 0;
}

Yukarıdaki örnekte, program aşağıdaki satırları ekrana yazar:

Geniş karakter dizisi: Bilgisayar
Çoklu byte karakter dizisi: Bilgisayar
Çevrilen karakter sayısı: 10
Çoklu byte karakter dizi uzunluğu: 10, karakter uzunluğu: 1

Yukarıdaki program, geniş bir karakter dizisini ekrana yazdıktan sonra wcstombs() fonksiyonu ile çoklu byte dizisine çevirir. Çevrilen diziyi ve çevrilen karakter sayısını ekrana yazar. Daha sonra, mblen() fonksiyonu ile çok byte'lı dizinin ilk karakterinin boyutunu ve strlen() fonksiyonu ile dizinin boyutunu alarak ekrana yazar.