#include <stdio.h>
#include <stdlib.h>

int main( void ) {
	const wchar_t wstring[] = { 0x518D, 0x89C1, 0 };
	const char utf8string[] = "\xE5\x86\x8D\xE8\xA7\x81";
	char utf8buf[ MB_CUR_MAX ];
	wchar_t uc;
	int i, j, n;
	/* Convert from Unicode to UTF-8 */
	for ( i=0; i<3; ++i ) {
		uc = wstring[i];
		n = wctomb( utf8buf, uc );
		printf( "wctomb( buf, 0x%X ) returned %d\n", uc, n );
		for ( j=0; j<n; ++j )
			printf( " buf[%d] == 0x%x\n", j, utf8buf[j] );
	}
	/* Convert from UTF-8 to Unicode */
	i = 0;
	while ( ( n = mbtowc( &uc, &utf8string[i], sizeof utf8string - i ) ) > 0 ) {
		printf( "mbtowc( &uc, &utf8string[%d], %d ) returned %d\n", i, sizeof utf8string - i, n );
		printf( "uc == 0x%x\n", uc );
		for ( j=0; j<n; ++j )
			printf( " utf8string[%d] == 0x%x\n", i+j, utf8string[i+j] );
		i += n;
	}
	return 0;
}
