convert wide characters to multibyte characters
#include <stdlib.h> size_t wcstombs( char *s, const wchar_t *pwcs, size_t n );
The wcstombs() function converts a sequence of wide character codes from the array pointed to by pwcs into a sequence of multibyte characters, and stores them in the array pointed to by s. The wcstombs() function stops if a multibyte character would exceed the limit of n total bytes, or if the null character is stored. At most n bytes of the array pointed to by s will be modified.
The number of array elements modified, not including the terminating zero code if present, or (size_t)-1 if an invalid multibyte character is encountered.
#include <stdio.h> #include <stdlib.h> wchar_t wbuffer[] = { 0x0073, 0x0074, 0x0072, 0x0069, 0x006e, 0x0067, 0x0000 }; void main() { 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 ); } }
produces the output:
/0073/0074/0072/0069/006e/0067 string(6)
ANSI
Safety: | |
---|---|
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |
mblen(), mbtowc(), mbstowcs(), wctomb()