[PR]

特定のバイト列を検索する

戻る

 バイト列から特定のバイト列を検索する関数を作る。

//*********************************************************
// 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

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

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

水無瀬 優 postmaster@katsura-kotonoha.sakura.ne.jp
『新妻LOVELY×CATION』を応援しています!