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.
If an invalid multibyte character is encountered, the wcstombs() function returns (size_t)-1. Otherwise, it returns the number of array elements modified, not including the terminating zero code if present.
mblen(), mbtowc(), mbstowcs(), wctomb()
#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
All (except DOS/PM)