Основной случай выполнения данной функции - когда s не равно NULL и
pwc не равно NULL. В этом случае
функция mbtowc проверяет максимум n байтов
в многобайтовой строке (начиная с s), извлекает из нее последующий
полный многобайтовый символ, преобразует его в широкий символ и
сохраняет его в *pwc.
Обновляется статус смещения *ps, известный только функции mbtowc.
Если s не указывает на байт '\0', то возвращается количество
байтов, которые использовались в 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 указывает на нулевой байт,
-1 возвращается при ошибках и сбоях.
Если s равно NULL, то функция mbtowc возвращает ненулевое значение
(при том, что кодировка имеет необычный статус смещения), и возвращает ноль,
если кодировка не имеет статуса.
Поведение mbtowc зависит от категории LC_CTYPE текущей локали.
Работа этой функции в нескольких подпроцессах небезопасна.
Функция mbrtowc предоставляет Вам более удобный интерфейс
при тех же функциональных возможностях.