Преобразовать широкий символ в многобайтовый символ
#include <stdlib.h>int wctomb( char *s, wchar_t wc );
NULL или указатель, куда функция может сохранить многобайтовый символ.libc
Функция wctomb() определяет количество байт, которое необходимо для представления многобайтового символа, который соответствует коду, полученному в аргументе wc. Если s не NULL, то по переданному указателю сохраняется массив, содержащий многобайтовую последовательность. Не более MB_CUR_MAX символов может быть сохранено.
NULL: 0 >0 NULL: -1 x #include <stdio.h>#include <stdlib.h>wchar_t wchar = { 0x0073 };char mbbuffer[MB_CUR_MAX];int main( void ){int len;printf( "Character encodings do %shave state-dependent \nencoding.\n",(wctomb( NULL, 0 )) ? "" : "not " );len = wctomb( mbbuffer, wchar );mbbuffer[len] = '\0';printf( "%s(%d)\n", mbbuffer, len );return (EXIT_SUCCESS);}
Код генерирует следующий вывод:
$ ./a.out Character encodings do not have state-dependent encoding. s(1)
ANSI, POSIX 1003.1
wcrtomb(), wcsrtombs(), wcstod(), wcstof(), wcstold(), wcstoimax(), wcstoumax(), wcstok(), wcstol(), wcstoll(), wcstombs(), wcstoul(), wcstoull(), wctob()
Предыдущий раздел: Описание API системной библиотеки