wcstombs()

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

Прототип:

#include <stdlib.h>
size_t wcstombs( char *s,
const wchar_t *pwcs,
size_t n );

Аргументы:

s
Указатель на область памяти, где функция может сохранить многобайтовую строку.
pwcs
Строка, состоящая из широких символов, кооторую необходимо преобразовать.
n
Максимальное количество байт для сохранения.

Библиотека:

libc

Описание:

Функция wcstombs() преобразует последовательность кодов широких символов из массива, переданного в аргументе pwcs, в последовательность многобайтовых символов, и сохраняет их в массив, переданный в s. Функция останавливается, как только новый многобайтовый символ превышает предел n общего количества байт, или если встретился NUL символ. Может быть преобразовано не более чем n байт массива, указанного в s.

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

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

Количество измененных элементов массива, не включая завершающий символ нуля, при его наличии, или (size_t)-1, если встретился недопустимый многобайтовый символ.

Примеры:

#include <stdio.h>
#include <stdlib.h>
wchar_t wbuffer[] = {
0x0073,
0x0074,
0x0072,
0x0069,
0x006e,
0x0067,
0x0000
};
int main( void )
{
char mbsbuffer[50];
int i, len;
len = wcstombs( mbsbuffer, wbuffer, 50 );
if ( len != -1 )
{
for ( i = 0; i < len; i++ )
printf( "/%4.4x", wbuffer[i] );
printf( "\n" );
mbsbuffer[len] = '\0';
printf( "%s(%d)\n", mbsbuffer, len );
}
return (EXIT_SUCCESS);
}

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

$ ./a.out /0073/0074/0072/0069/006e/0067 string(6)

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

ANSI, POSIX 1003.1

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

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

mblen(), mbtowc(), mbstowcs(), wcsrtombs(), wctomb()




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