[PR]

シフトJIS文字列の文字検索

戻る

//*********************************************************
// string の最初に現れた c へのポインタを返します。
// string の終端文字 '\0' も検索の対象です。
// c が見つからない場合は NULL を返します。
// 文字 c と2バイト文字の2バイト目とは一致しません。
//*********************************************************
char *
strchrj
	(
		const char *string,
		      int   c
	)
{
	const char *p = string;
	while( (c != jmscode(p)) && ('\0' != *p) )
	{
		p = jmsnext( p );
	}

	return (char *)( c == jmscode(p) ? p : NULL );
}//strchrj

使用例

//*********************************************************
// 関数 strchrj() の使用例です。
//*********************************************************
int main( void )
{
	const char *string;

	// 文字 'イ' の2バイト目は 0x43(='C') である。
	// 関数 strchr() は1バイト文字と2バイト文字を区別しないため、
	// 文字 'C' を検索すると文字 'イ' の2バイト目が返る。
	string = "2バイト文字, ASCII";
	puts( strchr(  string, 'C' ) );
	puts( strchrj( string, 'C' ) );

	// 文字 '表' の2バイト目は 0x5c(='\') である。
	// 関数 strchr() で文字 '\' を検索すると文字 '表' の2バイト目が返る。
	string = "計画表.xls";
	puts( strchr(  string, '\\' ) ? "hit." : "no hit." );
	puts( strchrj( string, '\\' ) ? "hit." : "no hit." );

	return 0;
}//main

実行結果

Cト文字, ASCII
CII
hit.
no hit.

関連

シフトJIS文字列の判定
シフトJISコードで使用する値
シフトJIS文字列の文字列検索



Google
ご意見・ご感想をお聞かせ下さい。匿名で送信できます。

 * 返信が必要な場合には postmaster@katsura-kotonoha.sakura.ne.jp へ直接メールしてください。

水無瀬 優 postmaster@katsura-kotonoha.sakura.ne.jp

あなたの作った歌をソフトウェアが人間の声で歌う! これぞ近未来のソフトウェア!
これを流行の一言ですませてはいけない! 技術的にもコンセプト的にも凄い!