//*********************************************************
// 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文字列の文字列検索
|