mbrlen -
вычисляет
количество
байт в
следующем
многобайтовом
символе
Standard C library (
libc,
-lc)
#include <wchar.h>
size_t mbrlen(const char s[restrict .n], size_t n,
mbstate_t *restrict ps);
Функция
mbrlen()
просматривает
не более
n
байт в
многобайтовой
строке,
начинающейся
с
s и
извлекает
следующий
полный
многобайтовый
символ. Она
изменяет
состояние
сдвига
*ps.
Если
многобайтовый
символ не
является
широким
символом null,
то
возвращается
количество
байт,
которые
использовались
из
s. Если
многобайтовый
символ
является
широким
символом null,
состояние
сдвига
*ps
сбрасывается
в
начальное
и
возвращается
0.
Если в
n
байтах,
начиная с
s,
не
содержится
полного
многобайтового
символа, то
mbrlen()
возвращает
(size_t) -2. Это
может
произойти
даже, если
n
>=
MB_CUR_MAX, если в
многобайтовой
строке
содержится
лишние
сдвиговые
последовательности.
Если
многобайтовая
строка,
начинающаяся
с
s,
содержит
некорректную
многобайтовую
последовательность
до
следующего
полного
символа, то
mbrlen()
возвращает
(size_t) -1 и
присваивает
errno значение
EILSEQ. В этом
случае
влияние на
*ps не
определено.
Если
ps
равно NULL, то
используется
статическое
анонимное
состояние,
известное
только
функции
mbrlen().
Функция
mbrlen()
возвращает
количество
байт,
просмотренных
в
многобайтовой
последовательности,
начинающейся
с
s, если при
этом был
получен
широкий
символ не
равный null.
Она
возвращает
0, если был
получен
широкий
символ null.
Она
возвращает
(size_t) -1 и
присваивает
errno значение
EILSEQ, если
встречена
некорректная
многобайтовая
последовательность.
Она
возвращает
(size_t) -2, если не
удалось
найти
полную
многобайтовую
последовательность,
что
означает,
что
n
должно
быть
увеличено.
Описание
терминов
данного
раздела
смотрите в
attributes(7).
Интерфейс |
Атрибут |
Значение |
mbrlen() |
Безвредность
в нитях |
MT-Unsafe race:mbrlen/!ps |
POSIX.1-2001, POSIX.1-2008, C99.
Поведение
mbrlen() зависит
от
категории
LC_CTYPE текущей
локали.
mbrtowc(3)
Русский
перевод
этой
страницы
руководства
был сделан
aereiae <
[email protected]>, Alexey <
[email protected]>, Azamat
Hackimov <
[email protected]>, Dmitriy S. Seregin
<
[email protected]>, Dmitry Bolkhovskikh <
[email protected]>,
ITriskTI <
[email protected]>, Max Is <
[email protected]>, Yuri
Kozlov <
[email protected]>, Иван
Павлов <
[email protected]>
и Малянов
Евгений
Викторович
<
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]