memchr(3) 文字を探すためにメモリをスキャンする

Other Alias

memrchr, rawmemchr

書式

#include <string.h>
void *memchr(const void *s, int c, size_t n);
void *memrchr(const void *s, int c, size_t n);
void *rawmemchr(const void *s, int c);

glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照):

memrchr(): rawmemchr(): _GNU_SOURCE

説明

memchr() 関数は、ポインタ s が指し示すメモリ領域の先頭の n バイトから最初に登場する文字 c を探す。 cs が指し示すメモリ領域の各バイトは両方とも unsigned char と解釈される。

memrchr() 関数は memchr() 関数に似ているが、 先頭から順方向に探すのではなく、 ポインタ s が指し示す n バイトのメモリブロックの 末尾から逆向きに探す。

rawmemchr() 関数は memchr() と同様だが、 cs が指す場所 から始まるメモリ領域のどこかにあることを前提にして (つまり、プログラマ はそのことを知っている)、最適化した方法で c の検索を実行する (すなわ ち、検索範囲の上限を示す引き数も使用されない)。c が見つからなかった 場合、その結果はどうなるか分からない。次に示す呼び出しは、文字列終端の ヌルバイトの位置を特定する高速な手段である。

char *p = rawmemchr(s, '\0');

返り値

memchr() 関数と memrchr() 関数は一致する文字へのポインタを返し、 もし文字が指定メモリ領域に現れない場合は NULL を返す。

rawmemchr() 関数はマッチするバイトが見つかった場合はマッチしたバイトへのポインタを返す。 マッチするバイトが見つからなかった場合、結果は不定である。

バージョン

rawmemchr() は glibc バージョン 2.1 で初めて登場した。

memrchr() は glibc バージョン 2.2 で初めて登場した。

属性

マルチスレッディング (pthreads(7) 参照)

関数 memchr(), memrchr(), rawmemchr() はスレッドセーフである。

準拠

memchr() 関数は SVr4, 4.3BSD, C89, C99, POSIX.1-2001 に準拠する。

memrchr() 関数は GNU 拡張であり、glibc 2.1.91 から使用可能である。

rawmemchr() 関数は GNU 拡張であり、glibc 2.1 から使用可能である。

この文書について

この man ページは Linux man-pages プロジェクトのリリース 3.65 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。