table of contents
- bullseye-backports 4.18.1-1~bpo11+1
- testing 4.18.1-1
- unstable 4.18.1-1
MBRTOWC(3) | Руководство программиста Linux | MBRTOWC(3) |
ИМЯ¶
mbrtowc - преобразовывает мультибайтовую последовательность в широкий символ
СИНТАКСИС¶
#include <wchar.h>
size_t mbrtowc(wchar_t *pwc, const char *s, size_t n, mbstate_t *ps);
ОПИСАНИЕ¶
В основном, функция предназначена для работы, когда s и pwc не равны NULL. В этом случае функция mbrtowc() просматривает не более n байт многобайтовой строки, начинающейся с s, извлекает следующий полный многобайтовый символ, преобразует его в широкий символ и сохраняет его в *pwc. При этом обновляется состояние сдвига *ps. Если преобразованный широкий символ не равен L'\0' (широкий символ null), то возвращается количество байт, которое было выбрано из s. Если преобразованный широкий символ равен L'\0', то состояние сдвига *ps сбрасывается в начальное состояние и возвращается 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));
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ¶
Функция mbrtowc() возвращает количество байт, просмотренных в многобайтовой последовательности, начинающейся с s, если при этом был получен широкий символ не равный L'\0'. Она возвращает 0, если был получен широкий символ L'\0'. Она возвращает (size_t) -1 и присваивает errno значение EILSEQ, если встречена некорректная многобайтовая последовательность. Она возвращает (size_t) -2, если не удалось найти полную многобайтовую последовательность, что означает, что n должно быть увеличено.
АТРИБУТЫ¶
Описание терминов данного раздела смотрите в attributes(7).
Интерфейс | Атрибут | Значение |
mbrtowc() | Безвредность в нитях | MT-Unsafe race:mbrtowc/!ps |
СООТВЕТСТВИЕ СТАНДАРТАМ¶
POSIX.1-2001, POSIX.1-2008, C99.
ЗАМЕЧАНИЯ¶
Поведение mbrtowc() зависит от категории LC_CTYPE текущей локали.
СМ. ТАКЖЕ¶
ЗАМЕЧАНИЯ¶
Эта страница является частью проекта Linux man-pages версии 5.10. Описание проекта, информацию об ошибках и последнюю версию этой страницы можно найти по адресу https://www.kernel.org/doc/man-pages/.
ПЕРЕВОД¶
Русский перевод этой страницы руководства был сделан 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.
6 марта 2019 г. | GNU |