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
       или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

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

Linux man-pages 6.03                            5 февраля 2023 г.                                     mbrtowc(3)