WCRTOMB(3)

НАЗВАНИЕ
wcrtomb - преобразование широкого символа в многобайтовую последовательность

СИНТАКСИС
#include <wchar.h>

size_t wcrtomb(char *s, wchar_t wc, mbstate_t *ps);

ОПИСАНИЕ
Общий случай работы функции - это когда s не равно NULL, а wc не равно L'\0'. В этом случае функция wcrtomb преобразует широкий символ wc в его многобайтовое представление и заносит его в начало массива символов, на который указывает s. Функция обновляет состояние сдвига *ps и возвращает длину получившегося многобайтового представления, то есть количество байтов, записанных в s.

Во втором случае s не равно NULL, но wc равно L'\0'. В этом случае функция wcrtomb заносит в массив символов, на который указывает s, оканчивающуюся байтом '\0' последовательность сдвига, необходимую для возврата *ps в начальное положение. Состояние сдвига *ps обновляется (возвращается в исходное), и возвращается длина последовательности сдвига плюс один, то есть количество байтов, записанных в s.

В третьем случае s равно NULL. Тогда wc игнорируется, а функция возвращает wcrtomb(buf,L'\0',ps), где buf - внутренний анонимный буфер.

Во всех вышеперечисленных случаях, если ps является указателем NULL, используется статическое анонимное состояние, известное только функции wcrtomb.

ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Функция wcrtomb возвращает количество байтов, которые уже записаны или должны быть записаны в массив, на который указывает s. Если wc не может быть представлена как многобайтовая последовательность (в соответствии с текущей локалью), то возвращается (size_t)(-1), а errno устанавливается равной EILSEQ.

СООТВЕТСТВИЕ СТАНДАРТАМ
ISO/ANSI C, UNIX98

СМ. ТАКЖЕ
wcsrtombs(3)

ЗАМЕЧАНИЯ
Поведение wcrtomb зависит от категории LC_CTYPE текущей локали.

Передавать NULL в качестве ps небезопасно с точки зрения работы подпроцессов.