Evresel Olmayan Dizge Dönüşümleri
Önceki Evresel Olmayan Dönüşümler Sonraki
Evresel Olmayan Dizge Dönüşümleri
ISO C90 standardında tek karakterlerden başka dizgeleri dönüştürecek işlevler de tanımlanmıştır. Bu işlevler ISO C90 standardınının 1. düzeltmesinde tanımlanmış olan benzerleriyle aynı sorunlardan muzdariptir; bkz. Dizge Dönüşümleri.
size_t mbstowcs
(wchar_t    *gdizge,
 const char *dizge,
 size_t      boyut)
işlev
mbstowcs ("multibyte string to wide character string" kısaltması) işlevi dizge boş karakter sonlandırmalı çokbaytlı karakter dizgesini geniş karakter kodlu bir diziye dönüştürür ve sonucun ilk boyut geniş karakterini gdizge içinde saklar. Sonlandıran boş karakter boyuta dahildir. Bu durumda dizge'den elde edilen geniş karakterlerin sayısı boyut'tan fazla ise sonuç sonlandırıcı boş karakteri içermeyecektir.
dizge'deki karakterlerin dönüşümü ilk öteleme durumuyla başlar.
Eğer geçersiz bir çokbaytlı karakter dizgesi bulunursa, mbstowcs işlevi -1 değeri ile döner. Aksi takdirde gdizge dizisi içinde saklanan geniş karakterlerin sayısı ile döner. Bu sayı boyut'tan küçükse sonlandırıcı boş karakter dahil değildir.
Aşağıdaki örnekte bir çokbaytlı karakter dizisinin dönüşümü ve elde edilen sonuç için nasıl yer ayrılacağı gösterilmiştir.
wchar_t *
mbstowcs_alloc (const char *string)
{
  size_t size = strlen (string) + 1;
  wchar_t *buf = xmalloc (size * sizeof (wchar_t));

  size = mbstowcs (buf, string, size);
  if (size == (size_t) -1)
    return NULL;
  buf = xrealloc (buf, (size + 1) * sizeof (wchar_t));
  return buf;
}
size_t wcstombs
(char          *dizge,
 const wchar_t *gdizge,
 size_t         boyut)
işlev
wcstombs ("wide character string to multibyte string" kısaltması) işlevi boş karakter sonlandırmalı gdizge geniş karakter dizgesini çokbayktlı karakter dizgesine dönüştürür ve sonucun boyut baytını dizge içinde saklar. Yeterince yer yoksa sonuç sonlandırıcı boş karakteri içermez. Karakter dönüşümü ilk öteleme durumuyla başlar.
Sonlandırıcı boş karakter boyuta dahildir. Bu bakımdan boyut, gdizge içindeki baytların sayısına eşit ya da daha küçükse sonlandırıcı boş karakter saklanmaz.
Bir kod için geçerli bir çokbaytlı karakter bulunamazsa işlev -1 ile döner. Aksi takdirde, dizge dizisi içinde saklanan baytların sayısı ile döner. Bu sayı boyut'tan küçükse sonlandırıcı boş karakter dahil değildir.
Önceki Üst Ana Başlık Sonraki
Evresel Olmayan Karakter Dönüşümleri Başlangıç Öteleme Durumu
Bir Linux Kitaplığı Sayfası