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> > wctomb

wctomb() fonksiyonu

Bildirim

int wctomb(char *dest, wchar_t src);

errno_t wctomb_s(int *restrict status, char *restrict dest, rsize_t destsz, wchar_t src); (C11)

Açıklama

Src parametresi ile gösterilen geniş bir karakteri çok byte'lı bir karaktere çevirerek ilk elemanı dest parametresi ile gösterilen bir diziye aktarır. MB_CUR_MAX değerinden daha fazla karakter aktarılmaz.

Eğer src parametresi boş bir karakter ('\0') ise, boş byte değeri dest parametresine yazılır.

Eğer dest parametresi NULL bir işaretçi ise, fonksiyon global dönüşüm durumunu sıfırlar ve kaydırma dizilerinin kullanılıp kullanılmayacağını belirler.

wctomb_s() fonksyonunda ek olarak, çalışma zamanında aşağıdaki hatalar tespit edildiğinde, yüklenmiş olan kısıtlayıcı işlem fonksiyonu çağrılır:

  • Destsz parametre değeri yazılacak olan byte sayısından küçük ise (dest NULL olmadıkça),
  • Destsz parametre değeri RSIZE_MAX değerinden büyük ise (dest NULL olmadıkça),
  • Dest NULL bir işaretçi ve destsz 0 değilse.

Parametreler

dest: Çok byte'lı karaktere çevrilen geniş karakterlerin yer alacağı dizini gösteren bir işaretçidir.

src: Çevrilecek olan geniş byte karakteri gösterir.

destsz: Dest parametresine yazılcak olan maksimum byte sayısı (Dest dizini boyutu)

status: Sonucun yükleneceği parametreyi gösteren bir işaretçidir.

Dönüş değeri

wctomb() fonksiyonu için, dest parametre değeri;

  • NULL bir işaretçi değil ise, src parametresindeki geniş karakterinin çoklu byte karakter olarak içerdiği byte sayısını,
  • Eğer src parametresindeki değer geçerli bir karakter değilse -1 değeri geri döndürülür.

Eğer dest 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ülür.

wctomb_s() fonksiyonu için, başarı durumunda (src parametresindeki geniş karakterin çoklu byte'a çevrilmiş hali dest parametresine ve uzunluğu status parametresine yüklenir veya dest boş bir karakter ise, kaydırma sırası durumu status parametresine yüklenir) 0 değeri, kodlama hatası veya çalışma zamanı kısıtı ihlalinde ((size_t)-1 değeri status parametresine yüklenir) sıfır olmayan bir değer geri döndürülür.

Status parametresine yüklenen değer hiçbir zaman MB_CUR_MAX değerini aşamaz.

Örnek


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

int main(void) {
    const wchar_t *wcp = L"Bilgisayar";
    char dest;
    int ret;

    while (*wcp) {
       ret = wctomb(&dest,*wcp);
       if (ret<1) break;
       printf ("%c", dest);
       wcp++;
    }

    return 0;
}

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

Bilgisayar

Yukarıdaki program, wctomb() fonksiyonu ile bir karakter dizisi içindeki geniş karakterleri sırasıyla çoklu byte karakterine çevirerek ekrana yazar.