文字列中のある1バイトについて、1バイト文字か2バイト文字の一部であるかを判定する。
//********************************************************* // 文字列 str の str[nPos] について、 // 0 …… 1バイト文字 // 1 …… 2バイト文字の一部(第1バイト) // 2 …… 2バイト文字の一部(第2バイト) // のいずれかを返す。 //********************************************************* int isJMS( const char *str, int nPos ) { int i; int state; // { 0, 1, 2 } // 0 = 1バイト文字 // 1 = 2バイト文字の第1バイト // 2 = 2バイト文字の第2バイト state = 0; for( i = 0; str[i] != '\0'; i++ ) { if ( ( state == 0 ) && ( jms1( str[i] ) ) ) state = 1; // 0 -> 1 else if ( ( state == 1 ) && ( jms2( str[i] ) ) ) state = 2; // 1 -> 2 else if ( ( state == 2 ) && ( jms1( str[i] ) ) ) state = 1; // 2 -> 1 else state = 0; // 2 -> 0, その他 // str[nPos] での状態を返す。 if ( i == nPos ) return state; } return 0; }//isJMS 関連 | |