mbtowc()

Преобразовать многобайтовый символ в широкий символ

Прототип:

#include <stdlib.h>
int mbtowc( wchar_t *pwc,
const char *s,
size_t n );

Аргументы:

pwc
Указатель на объект типа wchar_t, куда функция сохранит широкий символ.
s
Указатель на конвертируемый многобайтовый символ.
n
Максимальный размер многобайтового символа.

Библиотека:

libc

Описание:

Функция mbtowc() конвертирует один многобайтовый символ, начинающийся с s в широкий символ, находящийся в pwc, максимальный размер символа указывается в аргументе n. Функция останавливается, если встречается нуль-терминатор.

На результат работы функции влияет значение LC_TYPE.

Функция mbrtowc() является перезапускаемой версией функции mbtowc().

Возвращаемое значение:

Коды ошибок:

EILSEQ
Некорректная последовательность символов.

Примеры:

#include <stdio.h>
#include <stdlib.h>
int main( void )
{
char *wc = "string";
wchar_t wbuffer[10];
int i, len;
printf( "State-dependent encoding? " );
if ( mbtowc( wbuffer, NULL, 0 ) )
{
printf( "Yes\n" );
} else {
printf( "No\n" );
}
len = mbtowc( wbuffer, wc, 2 );
wbuffer[len] = '\0';
printf( "%s(%d)\n", wc, len );
for ( i = 0; i < len; i++ )
{
printf( "/%4.4x", wbuffer[i] );
}
printf( "\n" );
return (EXIT_SUCCESS);
}

Код генерирует следующий вывод:

$ ./a.out State-dependent encoding? No string(1) /0073

Классификация:

ANSI, POSIX 1003.1

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

btowc(), errno, mblen(), mbrlen(), mbrtowc(), mbsinit(), mbsrtowcs(), mbstowcs()




Предыдущий раздел: Описание API системной библиотеки