Provided by: manpages-ru-dev_4.21.0-2_all bug

ИМЯ

       mbrtowc - преобразовывает мультибайтовую последовательность в широкий символ

LIBRARY

       Standard C library (libc, -lc)

СИНТАКСИС

       #include <wchar.h>

       size_t mbrtowc(wchar_t *restrict pwc, const char s[restrict .n],
                      size_t n, mbstate_t *restrict ps);

ОПИСАНИЕ

       The  main case for this function is when s is not NULL and pwc is not NULL.  In this case,
       the mbrtowc()  function inspects at most n bytes of the multibyte string  starting  at  s,
       extracts the next complete multibyte character, converts it to a wide character and stores
       it at *pwc.  It updates the shift state *ps.  If the converted wide character is not L'\0'
       (the  null  wide character), it returns the number of bytes that were consumed from s.  If
       the converted wide character is L'\0', it resets the shift state *ps to the initial  state
       and returns 0.

       Если  в  n байтах, начиная с s, не содержится полного многобайтового символа, то mbrtowc()
       возвращает  (size_t) -2.  Это  может  произойти  даже,  если  n  >=  MB_CUR_MAX,  если   в
       многобайтовой строке содержится лишние сдвиговые последовательности.

       Если   многобайтовая   строка,  начинающаяся  с  s,  содержит  некорректную  многобайтовую
       последовательность до следующего полного символа, то mbrtowc()  возвращает  (size_t) -1  и
       присваивает errno значение EILSEQ. В этом случае влияние на *ps не определено.

       Ещё  случай,  когда  s  не  равно  NULL, а pwc равно NULL. В этом случае функция mbrtowc()
       действует как описано выше, но не сохраняет преобразованный широкий символ в памяти.

       И третий случай, когда s равно NULL. В этом случае pwc и n  игнорируются.  Если  состояние
       преобразования,  представляемое  *ps  означает  неполный  многобайтовый символ, то функция
       mbrtowc() возвращает (size_t) -1, присваивает errno значение  EILSEQ  и  оставляет  *ps  в
       неопределённом  состоянии.  Иначе  функция  mbrtowc() изменяет *ps в начальное состояние и
       возвращает 0.

       Во всех вышеперечисленных  случаях,  если  ps  равно  NULL,  то  используется  статическое
       анонимное  состояние, известное только функции mbrtowc(). Иначе *ps должен быть корректным
       объектом mbstate_t. Объект mbstate_t a может быть переведён в  начальное  состояние,  если
       его обнулить, например с помощью

           memset(&a, 0, sizeof(a));

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       The  mbrtowc()   function  returns  the number of bytes parsed from the multibyte sequence
       starting at s, if a non-L'\0' wide character was recognized.  It returns  0,  if  a  L'\0'
       wide  character  was  recognized.   It returns (size_t) -1 and sets errno to EILSEQ, if an
       invalid multibyte sequence was encountered.  It returns (size_t) -2 if it couldn't parse a
       complete multibyte character, meaning that n should be increased.

АТРИБУТЫ

       Описание терминов данного раздела смотрите в attributes(7).

       ┌─────────────────────────────────────┬──────────────────────┬────────────────────────────┐
       │ИнтерфейсАтрибутЗначение                   │
       ├─────────────────────────────────────┼──────────────────────┼────────────────────────────┤
       │mbrtowc()                            │ Безвредность в нитях │ MT-Unsafe race:mbrtowc/!ps │
       └─────────────────────────────────────┴──────────────────────┴────────────────────────────┘

СТАНДАРТЫ

       POSIX.1-2001, POSIX.1-2008, C99.

ЗАМЕЧАНИЯ

       Поведение mbrtowc() зависит от категории LC_CTYPE текущей локали.

СМ. ТАКЖЕ

       mbsinit(3), mbsrtowcs(3)

ПЕРЕВОД

       Русский  перевод  этой страницы руководства был сделан aereiae <aereiae@gmail.com>, Alexey
       <a.chepugov@gmail.com>, Azamat Hackimov <azamat.hackimov@gmail.com>,  Dmitriy  S.  Seregin
       <dseregin@59.ru>,       Dmitry      Bolkhovskikh      <d20052005@yandex.ru>,      ITriskTI
       <ITriskTI@gmail.com>, Max Is <ismax799@gmail.com>, Yuri Kozlov <yuray@komyakino.ru>,  Иван
       Павлов <pavia00@gmail.com> и Малянов Евгений Викторович <maljanow@outlook.com>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если  вы  обнаружите  ошибки  в  переводе этой страницы руководства, пожалуйста, отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.