Преобразовать широкий символ в многобайтовый символ
#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 системной библиотеки