#include #include #include const unsigned char chars[] = { ' ', '.', '1', 'A', 0x81,0x40, /* double-byte space */ 0x82,0x60, /* double-byte A */ 0x82,0xA6, /* double-byte Hiragana */ 0x83,0x42, /* double-byte Katakana */ 0xA1, /* single-byte Katakana punctuation */ 0xA6, /* single-byte Katakana alphabetic */ 0xDF, /* single-byte Katakana alphabetic */ 0xE0,0xA1, /* double-byte Kanji */ 0x00 }; #define SIZE sizeof( chars ) / sizeof( unsigned char ) void main() { int j, k; const unsigned char *prev; _setmbcp( 932 ); prev = &chars[ SIZE - 1 ]; do { prev = _mbsdec( chars, prev ); j = mblen( prev, MB_CUR_MAX ); if( j == 0 ) { k = 0; } else if ( j == 1 ) { k = *prev; } else if( j == 2 ) { k = *(prev)<<8 | *(prev+1); } printf( "Previous character %#6.4x\n", k ); } while( prev != chars ); }