Evresel Olmayan Karakter Dönüşümleri
Önceki Evresel Olmayan Dönüşümler Sonraki
Evresel Olmayan Karakter Dönüşümleri
int mbtowc
(wchar_t *restrict    sonuç,
 const char *restrict dizge,
 size_t               boyut)
işlev
mbtowc ("multibyte to wide character" kısaltması) işlevi boş olmayan dizge ile çağrıldığında dizge dizgesinin ilk çokbaytlı karakteri karşılığı olan geniş karakter koduna dönüştürülür ve sonuç *sonuç'da saklanır.
mbtowc işlevi boyut bayttan fazlasına bakmaz.
mbtowc işlevi boş olmayan dizge için üç olasılığı ayrımsar: dizge'nin ilk boyut baytı geçerli çokbaytlı karakterlerle başlar, geçersiz bir bayt dizilimi ile ya da bir karakterin parçası olarak başlar; ya da dizge bir boş dizgeyi (bir boş karakter) gösterir.
Geçerli bir çokbaytlı karakteri mbtowc bir geniş karaktere dönüştürüp *sonuç'da saklar ve bu karakterin bayt sayısı ile döner (daima en az 1 dir ve asla boyut bayttan büyük değildir).
Geçersiz bir bayt diziliminde mbtowc -1 ile döner. Boş bir dizge için 0 ile döner ve *sonuç içinde '\0' saklanır.
Çokbaytlı karakter kodu ötelenmiş karakterleri kullanıyorsa, mbtowc bunu düzeltir ve bir öteleme durumuna günceller. mbtowc boş gösterici içeren dizge ile çağrılırsa öteleme durumunu kendi standart ilk durumuyla ilklendirir. Ayrıca kullanılan çokbaytlı karakter kodu için bir öteleme durumu varsa sıfırdan farklı bir değerle döner. Bkz. Öteleme Durumu.
int wctomb
(char   *dizge,
 wchar_t wchar)
işlev
wctomb ("wide character to multibyte" kısaltması) işlevi wchar geniş karakter kodunu karşılığı olan çokbaytlı karaktere dönüştürür ve sonucu bayt cinsinden dizge içinde saklar. En çok MB_CUR_MAX karakter saklanır.
wctomb işlevi boş olmayan dizge ile çağrılırsa wchar için üç olasılığı ayrımsar: Geçerli bir geniş karakter kodu, geçersiz bir kod ve L'\0'.
Geçerli bir kod verilmişse, wctomb bunu çokbaytlı karaktere dönüştürüp sonucu dizge içinde saklar ve karakterdeki bayt sayısı ile döner (daima en az 1'dir ve MB_CUR_MAX'dan büyük değildir).
wchar geçersiz bir geniş karakter kodu ise wctomb -1 ile döner. L'\0' ise 0 ile döner, ayrıca *dizge içinde '\0' saklar.
Çokbaytlı karakter kodu ötelenmiş karakterler içeriyorsa wctomb bunu düzeltir ve bir öteleme durumuna günceller. Ayrıca kullanılan çokbaytlı karakter kodu bir öteleme durumuna sahipse sıfırdan farklı bir değerle döner. Bkz. Öteleme Durumu.
Bu işlev wchar argümanı ile sıfır aktarılarak çağrılması dizge'in boş olmaması halinde hem saklanmış öteleme durumunun yeniden ilklendirilmesi hem de '\0' çokbaytlı karakterinin saklanması ve işlevin 0 ile dönmesi ile ilgili bir yan etkiye sahiptir.
mbrlen'e benzer olarak bir çokbaytlı karakterin uzunluğunu hesaplayan ve evresel olmayan bir işlev de vardır. mbtowc kurallarıyla tanımlanabilir.
int mblen
(const char *dizge,
 size_t      boyut)
işlev
mblen işlevi boş olmayan dizge argümanı ile çağrıldığında dizge'nin başındaki çokbaytlı karakterin boyut bayttan daha fazla karakterine bakmaksızın bayt sayısı ile döner.
mblen'in dönüş değeri üç olasılığa bağlıdır: dizge'nin ilk boyut baytı geçerli çokbaytlı karakterlerle başlar, geçersiz bir bayt dizilimi ile ya da bir karakterin parçası olarak başlar; ya da dizge bir boş dizgeyi (bir boş karakter) gösterir.
Geçerli bir çokbaytlı karakter için mblen karakterin bayt sayısı ile döner (en az 1, en çok boyut bayt). Geçersiz bir bayt dizilimi için -1 ile döner. Bir boş dizge için ise sıfır ile döner.
Çokbaytlı karakter kodu ötelenmiş karakterleri kullanıyorsa, mblen bunu düzeltir ve bir öteleme durumuna günceller. mblen boş gösterici içeren dizge ile çağrılırsa öteleme durumunu kendi standart ilk durumuyla ilklendirir. Ayrıca kullanılan çokbaytlı karakter kodu için bir öteleme durumu varsa sıfırdan farklı bir değerle döner. Bkz. Öteleme Durumu.
mblen işlevi stdlib.h dosyasında bildirilmiştir.
Önceki Üst Ana Başlık Sonraki
Evresel Olmayan Dönüşümler Başlangıç Evresel Olmayan Dizge Dönüşümleri
Bir Linux Kitaplığı Sayfası