名 前
memchr, 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 を 探 す 。 c と s が 指 し 示 す メ モ リ ー 領 域 の 各 バ イ ト は 両 方 と も unsigned char と 解 釈 さ れ る 。
memrchr() 関 数 は memchr() 関 数 に 似 て い る が 、 先 頭 か ら 順 方 向 に 探 す の で は な く 、 ポ イ ン タ ー s が 指 し 示 す n バ イ ト の メ モ リ ー ブ ロ ッ ク の 末 尾 か ら 逆 向 き に 探 す 。
rawmemchr() 関 数 は memchr() と 同 様 だ が 、 c が s が 指 す 場 所 か ら 始 ま る メ モ リ ー 領 域 の ど こ か に あ る こ と を 前 提 に し て (つ ま り 、 プ ロ グ ラ マ は そ の こ と を 知 っ て い る )、 最 適 化 し た 方 法 で 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 か ら 使 用 可 能 で あ る 。
関 連 項 目
ffs(3), index(3), memmem(3), rindex(3), strchr(3), strpbrk(3), strrchr(3), strsep(3), strspn(3), strstr(3), wmemchr(3)
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。