バイト列から特定のバイト列を検索する関数を作る。 //********************************************************* // 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 | |