GNU
2019-03-06
man-pages-ru
Russian man pages from the Linux Documentation Project
manpages-dev
Manual pages about using GNU/Linux for development
man-pages
Linux kernel and C library user-space interface documentation
ИМЯ
mbtowc - преобразовывает мультибайтовую последовательность в широкий символ
ОБЗОР
#include <stdlib.h>
int mbtowc(wchar_t *pwc, const char *s, size_t n);
ОПИСАНИЕ
Обычно в эту функцию передают s и pwc не равные NULL. В этом случае функция mbtowc() просматривает не более n байт многобайтовой строки, начиная с s, извлекает следующий полный многобайтовый символ, преобразует его в широкий символ и сохраняет его в *pwc. Она обновляет внутренне состояние сдвига, доступное только функции mbtowc(). Если s не указывает на байт null (\(aq\0\(aq), то она возвращает количество байт, которые были потрачены из s, в противном случае возвращается 0.
Если в n байтах, начиная с s, не содержится полного многобайтового символа или если в них содержится некорректный многобайтовый символ, то mbtowc() возвращает -1. Это может произойти даже если n >= MB_CUR_MAX, если в многобайтовой строке содержится лишние сдвиговые последовательности.
Ещё случай, когда s не равно NULL, а pwc равно NULL. В этом случае функция mbtowc() действует как описано выше, но не сохраняет преобразованный широкий символ в памяти.
И третий вариант, когда s равно NULL. В этом случае pwc и n игнорируются. Функция mbtowc() сбрасывает состояние сдвига, известное только ей, в начальное состояние и возвращает не ноль, если кодировка имеет непростое состояние сдвига, или ноль, если кодировка не имеет состояний.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Если s не равно NULL, то функция mbtowc() возвращает количество потраченных байт, начиная с s, или 0, если s указывает на байт null, или -1 — при ошибке.
Если значение s равно NULL, то функция mbtowc() возвращает не ноль, если кодировка имеет необычное смещение, или ноль, если кодировка не имеет смещения.
АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).
Интерфейс | Атрибут | Значение |
mbtowc() | Безвредность в нитях | MT-Unsafe race |
СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.
ЗАМЕЧАНИЯ
Поведение mbtowc() зависит от категории LC_CTYPE текущей локали.
Данную функцию небезопасно использовать в нитях. Для этого лучше подходит функция mbrtowc(3) с тем же интерфейсом.