#include #include #include #include const wchar_t wc[] = { 0x0020, 0x002e, 0x0031, 0x0041, 0x3000, /* double-byte space */ 0xff21, /* double-byte A */ 0x3048, /* double-byte Hiragana */ 0x30a3, /* double-byte Katakana */ 0xff61, /* single-byte Katakana punctuation */ 0xff66, /* single-byte Katakana alphabetic */ 0xff9f, /* single-byte Katakana alphabetic */ 0x720d, /* double-byte Kanji */ 0x0000 }; #define SIZE sizeof( wc ) / sizeof( wchar_t ) void main() { int i, j, k; char s[2]; _setmbcp( 932 ); i = wcrtomb( NULL, 0, NULL ); printf( "Number of bytes to enter " "initial shift state = %d\n", i ); j = 1; for( i = 0; i < SIZE; i++ ) { j = wcrtomb( s, wc[i], NULL ); printf( "%d bytes in character ", j ); if( errno == EILSEQ ) { printf( " - illegal wide character\n" ); } else { if ( j == 0 ) { k = 0; } else if ( j == 1 ) { k = s[0]; } else if( j == 2 ) { k = s[0]<<8 | s[1]; } printf( "(%#6.4x->%#6.4x)\n", wc[i], k ); } } }