|
バイト列から特定のバイト列を検索する関数を作る。
//*********************************************************
// memmem()
// バイト列 から バイト列 を検索する。
// 最初 に現れたバイト列の先頭を指す ポインタ を返す。
// バイト列が見つからない場合は null を返す。
// 検索バイト数が 0 の場合は常に null を返す。
// 検索バイト列 pattern のバイト長が 0 の場合は常に base を返す。
//
// const char *base
// 検索対象となる バイト列
//
// int count
// 最大検索バイト数
//
// const void *pattern
// 検索する バイト列
//
// int length
// バイト列 pattern の バイト長
//
//*********************************************************
void * // バイト列へのポインタ
memmem
(
const void *base, // 検索対象バイト列
int count, // 検索対象バイト数
const void *pattern, // 検索するバイト列
int length // バイト列 pattern のバイト長
)
{
// 検索バイト数 0 では検索は常に失敗する。
if ( count <= 0 )
{
return NULL;
}
// 最初に一致する位置を探す
const char *start = static_cast<const char *>( base );
{for( const char *p = start;
p + length <= start + count;
++p )
{
if ( 0 == memcmp( p, pattern, length ) )
{
return const_cast<char *>( p );
}
}}
return NULL;
}//memmem
| |